SpringBoot工程可执行jar修改为可执行war


三步骤简述

1. 主程序继承SpringBootServletInitializer,并重写configure方法

2. POM文件,打包为jar改为打包为war。>war>

3. 内嵌的Servlet容器scope改为provided。>provided>

结果:war包即可以放在Servlet容器,比如tomcat的webapps下面运行,也可以通过jar -jar demo.war的方式运行

参考:官方文档 https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-create-a-deployable-war-file

@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);
    }
}

--------------------------------------------------------------------------
    com.hepengju
    demo
    0.0.1

    war
--------------------------------------------------------------------------
    
        org.springframework.boot
        spring-boot-starter-tomcat
        provided
    

SpringBoot的一些有意思的知识

1. dev-tools的触发文件名称为.reloadtrigger时, STS,IDEA的终端会出现reload图标
2. 可执行war包的处理:主程序类继承SpringBootServlet初始化器,pom改为war,tomcat改为provided
3. StopWatch打印每个任务的耗时及百分比
4. 获取程序PID:ApplicationPid、StartupInfoLogger.getStartingMessage()、ApplicationPidFileWriter
5. lsof -i:6379 查询占用这个端口的文件