Используя приложение Spring Boot, мы можем создать файл war для развертывания на веб-сервере. В этой главе вы узнаете, как создать файл WAR и развернуть приложение Spring Boot на веб-сервере Tomcat.
Spring Boot Servlet Initializer
Традиционный способ развертывания — заставить класс Spring Boot Application @SpringBootApplication расширить класс SpringBootServletInitializer . Файл класса Spring Boot Servlet Initializer позволяет настроить приложение при его запуске с помощью контейнера сервлетов.
Код для файла класса Spring Boot Application для развертывания файла JAR приведен ниже —
package com.tutorialspoint.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Нам нужно расширить класс SpringBootServletInitializer для поддержки развертывания WAR-файла. Код файла класса Spring Boot Application приведен ниже —
package com.tutorialspoint.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
Настройка основного класса
В Spring Boot нам нужно упомянуть основной класс, который должен запускаться в файле сборки. Для этого вы можете использовать следующие фрагменты кода —
Для Maven добавьте начальный класс в свойствах pom.xml, как показано ниже —
<start-class>com.tutorialspoint.demo.DemoApplication</start-class>
Для Gradle добавьте имя основного класса в build.gradle, как показано ниже —
mainClassName="com.tutorialspoint.demo.DemoApplication"
Обновите упаковку JAR в WAR
Мы должны обновить упаковочный JAR-файл в WAR, используя следующие фрагменты кода:
Для Maven добавьте упаковку как WAR в pom.xml, как показано ниже —
<packaging>war</packaging>
Для Gradle добавьте плагин приложения и плагин war в build.gradle, как показано ниже —
apply plugin: ‘war’ apply plugin: ‘application’
Теперь давайте напишем простую конечную точку отдыха, чтобы вернуть строку «Hello World from Tomcat». Чтобы написать конечную точку отдыха, нам нужно добавить в наш файл сборки зависимость веб-стартера Spring Boot.
Для Maven добавьте стартовую зависимость Spring Boot в pom.xml, используя код, как показано ниже —
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
Для Gradle добавьте начальную зависимость Spring Boot в build.gradle, используя код, как показано ниже —
dependencies { compile('org.springframework.boot:spring-boot-starter-web') }
Теперь напишите простой файл конечной точки отдыха в файле класса Spring Boot Application, используя код, показанный ниже:
package com.tutorialspoint.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @RequestMapping(value = "/") public String hello() { return "Hello World from Tomcat"; } }
Упаковка вашего приложения
Теперь создайте файл WAR для развертывания на сервере Tomcat, используя команды Maven и Gradle для упаковки вашего приложения, как указано ниже:
Для Maven используйте команду mvn package для упаковки вашего приложения. Затем будет создан WAR-файл, и вы сможете найти его в целевом каталоге, как показано на скриншотах ниже:
Для Gradle используйте команду gradle clean build для упаковки вашего приложения. Затем ваш WAR-файл будет создан, и вы сможете найти его в каталоге build / libs . Обратите внимание на скриншоты, приведенные здесь для лучшего понимания —
Развернуть в Tomcat
Теперь запустите сервер Tomcat и разверните файл WAR в каталоге webapps . Посмотрите на скриншоты, показанные здесь, для лучшего понимания —
После успешного развертывания, нажмите на URL в вашем веб-браузере http: // localhost: 8080 / demo-0.0.1-SNAPSHOT / и обратите внимание, что результат будет выглядеть так, как показано на скриншоте ниже —
Полный код для этой цели приведен ниже.
pom.xml
<?xml version = "1.0" encoding = "UTF-8"?> <project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tutorialspoint</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <start-class>com.tutorialspoint.demo.DemoApplication</start-class> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
build.gradle
buildscript { ext { springBootVersion = '1.5.8.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'war' apply plugin: 'application' group = 'com.tutorialspoint' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 mainClassName = "com.tutorialspoint.demo.DemoApplication" repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') }
Код основного файла класса приложения Spring Boot приведен ниже —