SpringBoot- devtools方式开发环境热部署+eclipes

使用devtools进行热部署
Demo/pom.xml
热部署 ,热加载1

<!-- 热部署 -->
		<!-- devtools可以实现页面热部署(即页面修改后会立即生效,
			这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现) -->
		<!-- 实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。 -->
		<!-- 即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),
			注意:因为其采用的虚拟机机制,该项重启是很快的 -->
		<!-- (1)base classloader (Base类加载器):加载不改变的Class,例如:第三方提供的jar包。 -->
		<!-- (2)restart classloader(Restart类加载器):加载正在开发的Class。 -->
		<!-- 为什么重启很快,因为重启的时候只是加载了在开发的Class,没有重新加载第三方的jar包。 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<!-- optional=true, 依赖不会传递, 该项目依赖devtools; 
	之后依赖boot项目的项目如果想要使用devtools, 需要重新引入 -->
			<optional>true</optional>
		</dependency>

在这里插入图片描述
src/main/resources/application.properties.java

#关闭缓存,即时刷新
#spring.freemarker.cache=false
#spring.thymeleaf.cache=true

#热部署生效
spring.devtools.restart.enabled=true
#设置重启的目录,添加哪些目录下的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
#为mybatis设置,生产环境可以删除
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
#排除那个目录下的文件不需要restart,一些静态资源不需要。
#spring.devtools.restart.exclude=static/**,public/**
#classpath目录下的WEB-INF文件夹内容修改不需要重启。
#spring.devtools.restart.exclude=WEB-INF/**

1.修改配置文件不会重启。
2.注解的修改会重启但是不起作用,需要手动进行重新启动。


  1. 哈哈
    (1) 热部署:就是容器状态在运行的情况下重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成sessin丢失等情况.

    (2)热加载:就是容器状态在运行的情况下重新加载改变编译后的类.在这种情况下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方法。因为内存无法转变成对像. 一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的

    在基于Java的实现热部署、热加载的过程中,类装入器扮演着重要的角色。类装入器不能重新装入一个已经装入的类,否则会报java.lang.LinkageError,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。一般debug模式都支持热加载。

    但我在这里遇到了eclipse使用debug启动却并没有热加载的状况,这样对于开发来说是非常耗时的,因为每更改一次class文件都需要重新编译。 ↩︎

发布了162 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39088066/article/details/103122294