zoukankan      html  css  js  c++  java
  • springboot分析——servlet容器切换以及热部署

      springboot是在spring基础上做了封装,将一些需要自定义的配置封装起来,简化了spring的启动流程,还支持内嵌web服务器,

    简单部署。

    一:springboot环境搭建

    环境搭建比较简单,可以直接到springboot官网订制

    二:将内置的tomcat servlet服务器切换为jetty服务器

    1:首先看一下默认的servlet容器

     从启动日志可以看出启动的Tomcat服务器:

    2:修改依赖,排除掉tomcat的启动依赖,加入jetty的依赖

     

     从启动日志看,程序已经被部署到了Jetty容器上

     

    3:看一下怎么实现容器切换的?

    自动配置工程内有个spring.factories,里面有个内嵌WebServerFactory的自动配置

     

    根据类路径上不同的类来确定实例化webServer工厂的类别

     

     

     

     @ConditionalOnMissingBean注解,如果容器中已经存在ServletWebServerFactory的对象,就不会再实例化了,确保只有一个servlet容器被实例化。

     实例化不同的web服务器对象,然后注入到bean容器中。

    在refresh方法中,有个预留的钩子方法,翻译过来就是:在指定的上下文子类中实例化其他指定的bean对象

    在ServletWebServerApplicationContext中,调用onRefresh方法:

     

     

     

     

     创建一个Tomcat容器对象:

     

     到这里tomcat容器启动就成功了,其他的servlet启动流程一样,只是调用到不同的类。

    三:springboot热部署

      有时候我们希望修改完类或者配置文件后可以自动重启,那么热部署这个功能就显得非常有用

    1:添加依赖和插件

    		<!--2: 热部署-->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-devtools</artifactId>
    			<optional>true</optional>
    		</dependency>
    
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
    				<configuration>
    					<fork>true</fork>
    				</configuration>
    			</plugin>
    		</plugins>
    

      

    启动服务,这时日志打印的线程名称是 restartedMain

     修改类的内容,然后保存,springboot后重启:

    到这里,springboot的热部署就完成了。

  • 相关阅读:
    轻松完成mysql4.1与mysql4.0数据库转换备份
    MYSQL数据迁徙tips,ORA00907: missing right parenthesis
    viking病毒再次感染公司LAN
    [恢]hdu 2032
    [恢]hdu 2042
    [恢]hdu 2033
    [恢]hdu 2039
    [恢]hdu 2029
    [恢]hdu 2010
    [恢]hdu 2016
  • 原文地址:https://www.cnblogs.com/warrior4236/p/13274412.html
Copyright © 2011-2022 走看看