SpringBoot实践:热部署

spring-boot-devtools

        devtools是spring boot中一个热部署插件,它通过监测类路径来及时发现文件的更新,当有文件更新后即触发一次重启。根据Spring Boot官方文档上的描述,devtools插件底层使用了两个类加载器,一个类加载器加载那些不会被更改的类(比如第三方的jar包),另一个官方称为“restart classloader”,专门来用来加载会被改变的类,由于发生变化的类通常很少,所以重启的速度比”冷启动“会快很多。
         对Eclipse来说,这里需要先打开Eclipse的自动构建功能Build Automatically,让Eclipse重新编译,覆盖掉原有class文件,这样当devtools发现类路径下class文件发生变化后,才会重启,否则热部署无效。

实践
        在实际的开发,只需要添加依赖即可;
        通过spring.devtools.restart.enabled配置可以控制是否自动重启一般开发情况下开启,生产环境下关闭(注意:在关闭的情况下,首次启动时仍会初始化"restart classloader",只是后续不再监听文件变化)

<dependency> 
		<groupId> org.springframework.boot </ groupId> 
		<artifactId> spring-boot-devtools </ artifactId> 
		<optional> true </ optional> 
</ dependency> 
spring.devtools.restart.enabled=false

 排除资源
        默认情况下,/META-INF/maven,、/META-INF/resources、/resources、/static、/public、/templates下文件的变化不会引起自动重启,通过spring.devtools.restart.exclude配置可自定义过滤。
  如果想在保留这些配置的基础上,添加其它路径,通过spring.devtools.restart.additional-exclude指定。
  整体来说,这个包括下面的,在实际中用的不多,只要注意将静态资源放到这些目录下就行。

spring.devtools.restart.exclude=static/**,public/**
spring.devtools.restart.additional-exclude=xx/**

添加资源
  
除了classpath路径下,你也可以指定其它监听路径,对应配置spring.devtools.restart.additional-paths

注意事项 

  1. 根据官方描述,devtools在远程应用程序上启用存在安全风险,所以在生产环境上应该禁用,
    应该排除devtools或设置spring.devtools.restart.enabled=false
  2. 如通过java -jar或自定义的classLoader启动方式都会被认为“生产环境”。
  3. 打包应用默认不会包含devtools,除非你禁用SpringBoot Maven插件的excludeDevtools属性。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值