[二]Spring Boot 热部署

1.  Spring Boot热部署 (一)

热部署:自动部署,当代码进行更改的时候不需要自己手动去重启项目

注意:1)当前方式热部署后只有修改返回值才能自动启动,当添加方法,类则不会

首先:pom.xml文件中plugins标签中添加依赖包

                   <!-- 在这里添加springloaderplugin-->

            <plugin>

                 <groupId>org.springframework.boot</groupId>

                 <artifactId>spring-boot-maven-plugin</artifactId>

                 <dependencies> 

                   <dependency> 

                       <groupId>org.springframework</groupId> 

                       <artifactId>springloaded</artifactId> 

                       <version>1.2.4.RELEASE</version>

                   </dependency> 

                </dependencies> 

                <executions> 

                   <execution> 

                       <goals> 

                           <goal>repackage</goal> 

                       </goals> 

                       <configuration> 

                           <classifier>exec</classifier> 

                       </configuration> 

                   </execution> 

                 </executions>

            </plugin>

 

2.1第一种方式    

使用maven 命令执行 :spring-boot:run

缺点:关闭服务的时候,后台服务不关闭,必须手动关闭

2.2第二种方式

         使用run as – javaapplication执行

1)        添加spring-loader-1.2.4.RELEASE.jar架包到lib文件

2)        然后把IDEA的run参数里VM参数设置为:-javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify

3)        
执行run as即可

2.  springboot + devtools(热部署)(二)

2.1      介绍:

spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),因为其采用的虚拟机机制,该项重启是很快的

2.2      原理:

使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为  restart ClassLoader ,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)

2.3      使用方法:

1)      在pom.xml标签中dependencys添加依赖包

<!-- spring boot devtools 依赖包. -->

            <dependency>

                   <groupId>org.springframework.boot</groupId>

                  <artifactId>spring-boot-devtools</artifactId>

                   <optional>true</optional>

                  <scope>true</scope>

 </dependency>

2)       在pom.xml标签中plugins添加spring-boot-maven-plugin

<!-- 这是spring bootdevtool plugin -->

        <plugin>

               <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

            <configuration>

                 <!--fork :  如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart-->

                <fork>true</fork>

            </configuration>

        </plugin>

3)      执行run as即可

4)      页面需要热部署需要配置:

application.properties配置spring.thymeleaf.cache=false(这里注意不同的模板配置不一样)

5)      如果未能实现的原因:

1.      eclipesBuild Automatically是否已经勾选(开启自动编译的功能)

2.      SpringApplication.setRegisterShutdownHook(false)如果设置了,那么自动重启不起作用

3.      是否加入plugin以及属性<fork>true</fork>

4.      对应的spring-boot版本是否正确推荐1.4.1版本以上

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值