handles:嵌入与外置的Servlet容器区别

 2021-07-05 23:31    77  

一handles:嵌入与外置的Servlet容器区别1、嵌入式Servlet容器1、应用打成可执行的jar

handles:嵌入与外置的Servlet容器区别

优点handles:

handles:嵌入与外置的Servlet容器区别

简单handles、便携;

handles:嵌入与外置的Servlet容器区别

缺点:

handles:嵌入与外置的Servlet容器区别

默认不支持JSP、优化定制比较复杂杂(使用定制器【ServerProperties、自定义WebServerFactoryCustomizer】,自己编写嵌入式Servlet容器的创建工厂【ServletWebServerFactoryConfiguration】)

handles:嵌入与外置的Servlet容器区别

2、外置的Servlet容器1、外面安装Tomcat---应用war包的方式打包

handles:嵌入与外置的Servlet容器区别

①、步骤1、创建一个工程,必须是War包的方式

handles:嵌入与外置的Servlet容器区别

handles:嵌入与外置的Servlet容器区别

2、创建webapp包,并导入本地的Tomcat

handles:嵌入与外置的Servlet容器区别

handles:嵌入与外置的Servlet容器区别

②、原理1、jar包:

handles:嵌入与外置的Servlet容器区别

执行SpringBoot主类的main方法,启动ioc容器,创建嵌入式的Servlet容;

2、war包:

启动服务器,服务器启动SpringBoot应用【SpringBootServletInitialize】,启动ioc容器;

1)、返回servlet3.0文档1、查询文档描述

2、如文档描述,当服务器启动时(web应用启动),会进行创建一个当前web应用里面每一个jar包里面ServletContainerInitializer实例;

3、ServletContainerInitializer的实现类放在jar包的META-INF/services文件夹下(spring-web下),有一个名为javax.servlet.ServletContainerInitializer的文件,内容就是ServletContainerInitializer的实现类的全类名

4、并且还可以很使用@HandlesTypes,在应用启动的时候加载我们感兴趣的类

③、执行的流程1、启动Tomcat,再启动SpringBoot应用

2、去寻找spring-web ...../META-INF/services/javax.servlet.ServletContainerInitializer

;在应用启动的时候就会启动,javax.servlet.ServletContainerInitializer文件中的内容,org.springframework.web.SpringServletContainerInitializer

3、点击进入该类

4、WebApplicationInitializer点击进入该类

5、相当于我们的SpringBootServletInitializer的类会被创建对象,并执行onStartup方法

6、SpringBootServletInitializer实例执行onStartup的时候会createRootApplicationContext;创建容器

7、Spring的应用就启动并且创建IOC容器(就run()方法)

本文标签:容器嵌入

原文链接:https://www.xgfox.com/bcrm/451.html

本文版权:如无特别标注,本站文章均为原创。