Spring Boot приложение за 15 минут
Что вы сделаете?
Вы сделаете простейшее Spring Boot приложение. В качестве view будет использоваться технология thymeleaf. Вместо контроллеров мы будем использовать “проброску” сразу на view с помощью ViewControllerRegistry
Что вам понадобится?
- Около 15-50 минут
- Ваш любимый текстовый редактор или IDE
- JDK 1.8 или выше
- Maven 3.0+
Как пользоваться этой статьей
- Внимательно прочитайте статью
- Скачайте исходный код с github
- Запустите и проверьте работу
- Удостоверьтесь что код вам понятен
- Если что то осталось неясно, смело задавайте вопросы мне или google
Thymeleaf
Давайте создадим gui-часть или view для нашего приложения. Так как приложение простое, то нам понадобятся всего лишь 2 странички выполненные по технологии Thymeleaf
Thymeleaf это Java XML/XHTML/HTML5 движок шаблонов(template engine) который может работать как в web(с помощью сервлетов) так и не в web окружениях(например для форматирования emails). Лучше всего конечно он подходит для слоя view в MVC-приложениях и имеет хорошую интеграцию со Spring.
Считается, что Thymeleaf это замена JSP. Шаблоны Thymeleaf можно открывать прямо в браузере как обычные html странички. Thymeleaf и какие у него есть преимущества перед JSP/JSTL?
Вот пример base.html странички:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Spring Boot Simple Example</title>
</head>
<body>
<h1>Hello %User name%!</h1>
<p>Please click <a th:href="@{/hello}">here</a> to see a message.</p>
</body>
</html>
Spring MVC
Наше приложение базируется на Spring MVC. Поэтому нам надо сконфигурировать наши контроллеры для того, чтобы наши Thymeleaf шаблоны показались пользователю. Однако в этот раз нам не понадобится создавать отдельные классы контроллеров. Мы воспользуемся такой удобной функциональностью из библиотеки Spring как ViewControllerRegistry
@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/base").setViewName("base");
registry.addViewController("/").setViewName("base");
registry.addViewController("/hello").setViewName("hello");
}
}
Spring Boot
Насмотря на то, что в название статьи фигурирует Spring Boot, часть про него получилась самая короткая. Лаконичная аннотация @SpringBootApplication скрывает под собой следующее:
- @Configuration - помечает класс как источник бинов для контекста приложения(application context)
- @EnableAutoConfiguration - указывает Spring Boot начать добавлять бины базируясь на настройках classpath, других бинах, и других настроечных параметрах.
- @ComponentScan - указывает Spring искать компоненты, конфигурации и сервисы в пакете данного класса.
- @EnableWebMvc - обычно вы добавляете эту аннотацию в ваше Spring MVC приложение, но Spring Boot добавляет ее автоматически когда видит spring-webmvc в classpath
Обратите внимание, что spring-webmvc.jar добавился в наш проект после того, как мы подключили так называемый spring boot starter Подробнее тут: getting-started-first-application-dependencies
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Для того, чтобы запустить наше приложение нужно просто выполнить обычный main метод который содержит в себе SpringApplication.run().
Заметьте, что вам не пришлось ни устанавливать Tomcat ни править web.xml. Веб-приложение 100% написано на java и вам не нужно конфигурировать сотни xml и настраивать инфраструктуру бессонными ночами.
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Throwable {
SpringApplication.run(Application.class, args);
}
}
Запуск
- Запустите main-метод
- Откройте в браузере http://localhost:8080
Код приложения
https://github.com/levrun/spring-boot-example
По мотивам: https://spring.io/guides/gs/securing-web
Leave a Comment