1. Configure a operação de três etapas
1. Modifique o tipo de embalagem do projeto
<packaging>war</packaging>
2. Remova a dependência incorporada do tomcat (não necessário)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- scope设置为provided, 表明依赖由外部容器提供,在打包时会将该包排除 -->
<scope>provided</scope>
</dependency>
Depois que o pacote war empacotado é descompactado, a dependência fornecida pelo escopo (aqui, tomcat integrado) é colocada no diretório fornecido pela lib em vez do diretório lib
3. Herdar SpringBootServletInitializer e substituir o método de configuração
3.1. Método Um
@RestController
@SpringBootApplication
public class TomcatDemoApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(TomcatDemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TomcatDemoApplication.class);
}
@GetMapping("/hello")
public String hello() {
return "hello world";
}
}
3.2. Método Dois
@RestController
@SpringBootApplication
public class TomcatDemoApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(TomcatDemoApplication.class, args);
}
@GetMapping("/hello")
public String hello() {
return "hello world";
}
}
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TomcatDemoApplication.class);
}
}
Dois, etapas de implantação do pacote
1. O pacote Mvn é empacotado e o nome do pacote é padronizado para:
<artifactId>-<version>.<packaging>
Configure para os seguintes itens:
<groupId>com.example</groupId>
<artifactId>tomcat-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
O nome do pacote após o empacotamento é: tomcat-demo-0.0.1-SNAPSHOT.war
2. Coloque o pacote war concluído no diretório webapp do tomcat externo e inicie bin / start.bat
3. Visite http: // localhost: 8085 / tomcat-demo-0.0.1-SNAPSHOT / hello , a página normalmente retorna "hello world"
Três, questões que precisam de atenção
1. Após implantar o projeto com tomcat externo, algumas configurações internas do Spring Boot são inválidas, por exemplo:
server.port, server.servlet.context-path 等, 因为这些配置都是针对内嵌tomcat容器的,要修改端口号和部署根路径的话,需要修改外部tomcat的相关配置
2. Altere o nome do pacote padrão após empacotar
<build>
<finalName>tomcat-demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Depois de empacotar como este, o nome do pacote é
<finalName>.war, 这里即为tomcat-demo.war
O formulário de acesso foi alterado para: http: // localhost: 8085 / tomcat-demo / hello