Военный пакет SpringBoot развернут в tomcat

Spring Boot

Превратите проект spring-boot в военный пакет и опубликуйте его в контейнере tomcat, чтобы он работал как обычные веб-проекты.

Во-первых, измените метод упаковки

Установить в pom.xml<packaging>war</packaging>

Во-вторых, удалите встроенный Tomcat

В пом.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 移除内嵌的tomcat插件 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

В-третьих, добавьте зависимость servlet-api

в пом.xml

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

В-четвертых, измените класс запуска и перепишите метод инициализации.

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Нам нужна конфигурация, аналогичная web.xml, чтобы запустить контекст весны. Добавьте класс SpringBootStartApplication в одноуровневую структуру класса Application. Код выглядит следующим образом:

/**
 * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
 */
public class SpringBootStartApplication extends SpringBootServletInitializer {
 
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(Application.class);
    }
}

Пять, развертывание пакета

Дважды щелкните пакет в окне Maven идеи, чтобы упаковать его. После успешного завершения пакет war будет сгенерирован в целевом каталоге.

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

Наконец, введите браузер, чтобы запросить доступ.

http://localhost:[端口号]/[打包项目名]/