常见的启动形式一:
默认的 application 启动,在创立我的项目时主动生成 application 启动类,间接 run 执行即可。
形式二:应用外置的 tomcat 启动
1. 默认的启动类要继承 SpringBootServletInitiailzer 类,并复写 configure() 办法。
@SpringBootApplication
public class FileuploadApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(FileuploadApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return super.configure(builder);
}
2. 增加本地 tomcat 并进行配置
启动外围逻辑
- SpringBootServletInitializer 的执行过程,简略来说就是通过 SpringApplicationBuilder 构建并封装 SpringApplication 对象,并最终调用 SpringApplication 的 run 办法的过程。
- Spring boot 就是为了简化开发的,也就是用注解的形式取代了传统的 xml 配置。
- SpringBootServletInitializer 就是原有的 web.xml 文件的代替, 应用了嵌入式 Servlet, 默认是不反对 jsp。
- SpringBootServletInitializer 能够应用内部的 Servlet 容器,应用步骤:
1. 必须创立 war 我的项目,须要创立好 web 我的项目的目录
。
2. 嵌入式 Tomcat 依赖 scope 指定 provided。3. 编写 SpringBootServletInitializer 类子类, 并重写 configure 办法。
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(SpringBoot04WebJspApplication.class);
}
}
4. 启动服务器。
jar 包和 war 包启动区别
-
jar 包:
- 执行 SpringBootApplication 的 run 办法, 启动 IOC 容器, 而后创立嵌入式 Servlet 容器
-
war 包:
- 先是启动 Servlet 服务器, 服务器启动 Springboot 利用 (springBootServletInitizer), 而后启动 IOC 容器
SpringBootServletInitializer 实例执行 onStartup 办法的时候会通过 createRootApplicationContext 办法来执行 run 办法,接下来的过程就同以 jar 包模式启动的利用的 run 过程一样了,在外部会创立 IOC 容器并返回,只是以 war 包模式的利用在创立 IOC 容器过程中,不再创立 Servlet 容器了。