springboot启动方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot启动方式相关的知识,希望对你有一定的参考价值。

参考技术A 两种

1.jar包方式

2.war包方式

jar包

1. Application.java中main方法SpringApplication.run(Application.class,args);

2.java -jar application.jar

3.以spring内嵌的tomcat启动,这种方式需要一个jar

war包

1.Application.java extends SpringBootServletInitializer

2.重写configure方法,builder.sources(Application.class)

3.这是以外部tomcat启动的

原理: 

SpringBootServletInitializer实现了WebApplicationInitializer,这个WebApplicationInitialzer是spring-web.jar的类;

通过spi实现了Serlvet3.0规范,在spring-web.jar/META-INF/services/javax.servlet.ServletContainerInitilizer文件里,加载了SpringServletContainerInitializer

这个SpringServletContainerInitializer implements ServletContainerInitializer

ServletContainerInitializer是在servlet-api.jar中,是一个servlet3.0规范的接口,tomcat启动会加载这个接口的实现。所以也就会加载SpringServletContainerInitializer

在SpringServletContainerInitializer中通过serlvet-api.jar的注解@HandlerTypes(WebApplicationInitializer.class),在onStartup()方法中把实现了WebApplicationInitializer的类放到参数集合Set<Class<?>> webAppInitializerClasses中,这个集合中就有前面的SpringBootServletInitializer

以上是关于springboot启动方式的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot三种启动方式

Springboot的启动方式

SpringBoot启动方式

springboot启动方式

SpringBoot启动过程原理

SpringBoot项目启动错误,解决方式