关于java:SpringBootServletInitializer启动springboot项目

21次阅读

共计 1456 个字符,预计需要花费 4 分钟才能阅读完成。

常见的启动形式一:

默认的 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 容器了。

正文完
 0