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启动方式的主要内容,如果未能解决你的问题,请参考以下文章