论坛首页 编程语言技术论坛

89. Spring boot devtools与session【从零开始学Spring Boot】

浏览 2140 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2016-09-16  

springboot + devtools(热部署)【从零开始学Spring Boot

章节中我们已经介绍了spring boot中使用devtools的基本步骤以及一些注意事项了,本节针对于网友的一些问题,在总结出一些注意点,以及在实际开发中一些重要的地方。

       问题的提出:

       devtools中在编写一个普通的程序时,都是能够运行的很正常的,但是和其它进行一起运行的时候,可能就会出现各种各样的问题了,比如:登录之后,然后修改了一些代码之后devtoolsrestart,然后重新一访问又重新登录了。

1devtools restart session设置为依然存在

       如果restart之后session失效的话,那么就会造成需要重新登录问题,这个问题很好解决,只需要在application.properties添加如下配置:

server.session.persistent=true

注意在spring boot 1.3.3 / 1.4.0默认就是true

 

2)修改模板文件restart不生效

       模板文件不生效主要是由于模板有缓存,只要把缓存给关闭即可,配置application.properties文件:

#模板引擎:thymeleaf;

spring.thymeleaf.cache=false

#Javascript 语言的模板引擎:Mustache

spring.mustache.cache=false

#模板引擎:velocity

spring.velocity.cache=false

#groovy模板

spring.groovy.template.cache

 

3 causing ClassCastException while getting from cache.

       当在使用缓存的时候,可能就会抛出如上的异常信息了,这是devtools已知的限制。当缓存条目被反序列化时,对象无法附加到合适的类加载器。

       有一些方法可以修复这样的问题:

1)当运行在开发环境的时候,禁用缓存,配置spring.cache.type=NONE

2)使用一个不同的缓存管理器(假如你正在使用spring boot 1.3,你能够强制使用simple cache manager通过在application-dev.properties配置spring.cache.type,并且使用在你的IDE中启用dev profile

3)在应用程序类加载器配置缓存,这种比较复杂,需要新建META-INF/spring-devtools.properties

文件进行配置,支持restart.exclude. and restart.include.

例如:

restart.include.companycommonlibs=/mycorp-common-[\\w-]+\.jar

restart.include.projectcommon=/mycorp-myproj-[\\w-]+\.jar

 

 

       好了使用devtools还是有好多坑的,还是希望官方在这方面能够多下功夫,比如如果能支持指定某一些类不重新加载等等的这样的配置或者整个加载器能够编写的更加强大就好了。

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics