Статьи

Spring Boot: быстрый старт MVC

Spring-Boot-MVC-Gradle-300x300

Я планировал написать статью о Spring Boot больше года назад. Наконец у меня есть время и вдохновение для этого. Так что подготовьтесь к 10-15 минутам высококачественного весеннего урока. Я собираюсь продемонстрировать основы Spring Boot с Gradle и встроенным Tomcat. Я использую Intellij IDEA вместо Eclipse, но это не должно быть проблемой для тех из вас, кто привык к Eclipse.

Введение в Spring Boot

Какова моя цель? Я хочу разработать что-то очень похожее на одно из моих предыдущих руководств по конфигурированию Spring и Java . Это хорошее упражнение для сравнения двух разных подходов к разработке Spring.
Без сомнения, большинство из вас знает, что является главной целью Spring Boot. Для остальных читателей я хочу сказать, что Spring Boot делает разработчиков счастливее, потому что он заботится о конфигурации, а разработчики могут сосредоточиться на производстве кода. Для более подробной информации читайте официальную ссылку .

Файл сборки Gradle

Spring-Boot-Project-256x300

Для управления зависимостями и сборки проекта я использую Gradle. Вот как выглядит файл build.gradle :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
buildscript {
    repositories {
        //Required repos
        mavenCentral()
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "http://repo.spring.io/milestone" }
    }
    dependencies {
        //Required dependency for spring-boot plugin
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.1.2.BUILD-SNAPSHOT'
    }
}
 
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'spring-boot'
 
war {
    baseName = 'companies'
    version =  '0.1'
}
 
repositories {
    mavenCentral()
    maven { url "http://repo.spring.io/snapshot" }
    maven { url "http://repo.spring.io/milestone" }
}
 
dependencies {
    compile 'org.springframework.boot:spring-boot-starter-web'
    //Required dependency for JSP
    providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper'
}

Если вы новичок в Gradle, я рекомендую вам прочитать об этом где-нибудь еще, например, на официальном сайте. Это действительно хороший и практичный инструмент. Он может делать все, что делает Maven, но без XML!

Инициализация Spring Boot

Теперь мы можем настроить Spring Boot на уровне кода Java.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
package com.companies;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
 
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class CompanyApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(CompanyApplication.class, args);
    }
 
}

Вот и все, теперь вы можете начать развивать свою бизнес-логику. Шучу, нам нужно добавить несколько дополнительных настроек, связанных с разрешением просмотра.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.companies.config;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
 
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter{
 
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
 
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("WEB-INF/pages/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
 
}

После того, как вы создали класс, опубликованный выше, вы можете приступить к разработке контроллера.

Контроллер и просмотр

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.companies.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class HelloWorldController {
 
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public ModelAndView hello() {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("hello");
         
        String str = "Hello World!";
        mav.addObject("message", str);
 
        return mav;
    }
 
}

И соответствующий вид hello.jsp для контроллера:

1
2
3
4
5
6
7
8
<html>
<head>
    <title>Hello world page</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

Я надеюсь, что не составит труда повторить все эти шаги.

Запустите приложение Spring Boot

Последнее, что мы должны сделать в этом уроке, — это запустить приложение. Поэтому я использую Gradle, и в нашем файле build.gradle я указал, что приложение должно быть упаковано как файл WAR — мне нужно запустить сборку и запустить файл war.
Вот как это выглядит в IDEA:

весна-загрузка вводного 300x134

Результат вы можете увидеть здесь: localhost: 8080 / hello

Ссылка: Spring Boot: быстрый старт MVC от нашего партнера JCG Алексея Зволинского в блоге заметок Фрузенштейна .