Spring Boot — это отличный программный продукт, позволяющий загрузить приложение Spring за несколько секунд. И это действительно работает. Как можно меньше конфигурации, чтобы начать. И все же можно изменить настройки по умолчанию. Давайте посмотрим, как легко загрузить Spring MVC с Thymeleaf и Maven и работать с ним в IntelliJ.
Базовая настройка Spring MVC + Thymeleaf с Maven
Убедитесь, что у вас установлен Maven 3 с помощью следующей команды: mvn --version
. Перейдите в каталог, в котором вы хотите создать свой проект, и выполните архетип Maven:
1
|
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=pl.codeleak.demos.sbt -DartifactId=spring-boot-thymeleaf -interactiveMode= false |
Приведенная выше команда создаст новый каталог spring-boot-thymeleaf
. Теперь вы можете импортировать его в вашу IDE. В моем случае это IntelliJ.
Следующим шагом является настройка приложения. Откройте pom.xml
и добавьте родительский проект: значения из родительского проекта будут значениями по умолчанию для этого проекта, если они не указаны.
Следующим шагом является добавление веб-зависимостей. Для этого я сначала удалил все предыдущие зависимости (на самом деле junit 3.8.1) и добавил следующие зависимости: теперь, подождите секунду, пока Maven загрузит зависимости и запустите mvn dependency:tree
чтобы увидеть, какие зависимости включены.
Следующая вещь — это конфигурация упаковки. Давайте добавим подключаемый модуль Spring Boot Maven: базовые настройки уже выполнены. Теперь мы можем запустить приложение. Плагин Spring Boot Maven предлагает две цели run
и repackage
. Итак, давайте запустим приложение, используя mvn spring-boot:run
. Команда должна выдать Hello World!
, Обратите внимание, что в классе App
есть метод main
. Фактически, вы можете запустить этот класс в IntellJ (или любой другой IDE).
1
|
Hello World! |
Но подожди минутку. Это не веб-приложение. Итак, давайте App
класс App
чтобы он стал точкой входа в приложение Spring Boot:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package pl.codeleak.demos.sbt; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @EnableAutoConfiguration @Configuration @ComponentScan public class App { public static void main(String[] args) { SpringApplication.run(App. class ); } } |
В дополнение к вышесказанному, я бы удалил AppTest
как он отстой (он был создан maven-archetype-quickstart)! Теперь мы можем запустить приложение еще раз, чтобы увидеть, что происходит:
1
|
java.lang.IllegalStateException: Cannot find template location: class path resource [templates/] (please add some templates or check your Thymeleaf configuration) |
Ясно. Давайте тогда добавим несколько шаблонов Thymeleaf.
Где разместить шаблоны Thymeleaf?
Стандартным местом для шаблонов является… templates
доступные в classpath. Поэтому нам нужно поместить хотя бы один шаблон в каталог src/main/resources/templates
. Давайте создадим простую: снова запустив приложение, мы запустим встроенный Tomcat с нашим приложением на порту 8080:
1
|
Tomcat started on port(s): 8080 /http |
ОК. Но чего-то не хватает. Когда мы перейдем к localhost:8080
мы увидим страницу 404
. Конечно! Контроллеров еще нет. Итак, давайте создадим один:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
package pl.codeleak.demos.sbt.home; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller class HomeController { @RequestMapping ( "/" ) String index() { return "index" ; } } |
После повторного запуска приложения вы сможете увидеть Hello Spring Boot!
страница!
Добавление статических ресурсов
Как и в шаблонах Thymeleaf, статические ресурсы по умолчанию отправляются из classpath.
Мы можем поместить файлы CSS в src/main/resources/css
, файлы JavaScript в src/main/resources/js
и т. Д.
В шаблоне Thymeleaf мы ссылаемся на них так:
Преобразование упаковки из банки в войну
Но что, если мы хотим запустить приложение как простое веб-приложение и предоставить его как пакет war? Это довольно легко с Spring Boot. Во-первых, нам нужно преобразовать тип упаковки в pom.xml
из jar
в war
(элемент упаковки). Во-вторых, сделайте так, чтобы Tomcat представлял собой зависимую зависимость: последний шаг заключается в загрузке конфигурации сервлета. Создайте класс Init
и наследуйте от SpringBootServletInitializer
:
01
02
03
04
05
06
07
08
09
10
11
|
package pl.codeleak.demos.sbt; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.web.SpringBootServletInitializer; public class Init extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(App. class ); } } |
Мы можем проверить, работает ли конфигурация с mvn clean package
Maven: mvn clean package
. Файл войны должен быть создан:
1
|
Building war: C:\Projects\demos\spring-boot-thymeleaf\target\spring-boot-thymeleaf- 1.0 -SNAPSHOT.war |
Используйте Maven для непосредственного запуска приложения из файла war:
1
|
java -jar target\spring-boot-thymeleaf- 1.0 -SNAPSHOT.war |
Имея военный проект, мы можем запустить приложение в IntelliJ. После того, как мы изменили упаковку, IntellJ должен обнаружить изменения в проекте и добавить к нему веб-фасет. Следующим шагом является настройка сервера Tomcat и запуск его. Перейдите, чтобы Edit Configurations
и добавить сервер Tomcat с разнесенным военным артефактом. Теперь вы можете запустить приложение как любое другое веб-приложение.
Перезагрузка шаблонов Thymeleaf
Поскольку приложение, работающее на локальном сервере Tomcat в IntelliJ, мы можем перезагрузить статические ресурсы (например, файлы CSS) без перезапуска сервера. Но по умолчанию Thymeleaf кэширует шаблоны, поэтому для обновления шаблонов Thymeleaf нам нужно изменить это поведение. Для этого добавьте application.properties
в каталог src/main/resources
со следующим свойством: spring.thymeleaf.cache=false
. Перезапустите сервер, и теперь вы можете перезагрузить шаблоны Thymeleaf без перезапуска сервера.
Изменение других настроек по умолчанию
Конфигурация кэша — не единственная доступная конфигурация, которую мы можем настроить. Пожалуйста, посмотрите на класс ThymeleafAutoConfiguration
чтобы увидеть, что еще можно изменить. Чтобы упомянуть несколько: spring.thymeleaf.mode
, spring.thymeleaf.encoding
.
Последние мысли
Spring Boot упрощает загрузку веб-приложения. Всего за пару шагов вы получаете полностью работающее веб-приложение, которое может быть автономным или работать в любой среде сервлета. Вместо изучения конфигурации Spring вы можете сосредоточиться на разработке. Чтобы узнать больше о Spring Boot, прочитайте руководство и ознакомьтесь с руководствами Spring, которые предоставляют множество полезных руководств по началу работы. Наслаждайтесь!
Ресурсы
- Исходники проекта Spring Boot Thymeleaf
- Spring Boot Справочное руководство
- Пружинные направляющие
- Проект Thymeleaf
Ссылка: | Как сделать: Spring Boot и Thymeleaf с Maven от нашего партнера JCG Рафаля Боровца в блоге Codeleak.pl . |