概述
目录
spring boot devtools 开发人员工具
IDEA + spring-boot-devtools 热部署
IDEA + springloaded 热部署
IDEA 同一应用多实例启动
Spring boot devtools 开发人员工具
1、spring boot devtools 模块可以包含在任何项目中,以提供额外的开发时功能。
2、官网:Spring Boot Reference Guide
3、官网常用属性配置:spring-boot/DevToolsProperties.java at v2.1.15.RELEASE· GitHub
# DEVTOOLS (DevToolsProperties)
spring.devtools.add-properties=true #是否启用开发属性默认值。
spring.devtools.livereload.enabled=true # 是否启用livereload。com兼容服务器。
spring.devtools.livereload.port=35729 # 服务器端口。
spring.devtools.restart.additional-exclude= #触发完全重启时应排除的其他模式。
spring.devtools.restart.additional-paths= # 用于监视更改的其他路径。
spring.devtools.restart.enabled=true # 是否启用自动重启。
spring.devtools.restart.exclude=META-INF/maven/**,META-INF/resources/**,resources/**,static/**,public/**,templates/**,**/*Test.class,**/*Tests.class,git.properties,META-INF/build-info.properties # 应排除触发完全重新启动的模式。
spring.devtools.restart.log-condition-evaluation-delta=true #是否在重新启动时记录条件评估增量。
spring.devtools.restart.poll-interval=1s # 轮询类路径更改之间等待的时间量。
spring.devtools.restart.quiet-period=400ms # 触发重新启动之前,在没有任何类路径更改的情况下所需的静默时间量。
spring.devtools.restart.trigger-file= # 更改时触发重新启动检查的特定文件的名称。如果未指定,任何类路径文件更改都会触发重新启动。
IDEA + spring-boot-devtools 热部署
1、IDEA 编写 Spring Boot 项目时,修改前端 html、js、css 等文件,或者后端 java 文件,浏览器无法实时访问修改后的内容时,此时可以设置热部署。
2、修改 pom.xml 文件:在 pom.xml 文件 <dependencies> 中添加热部署依赖,<plugins> 中设置插件 fork 为 true:
<dependencies>
<!--添加热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<true 表示依赖不传递>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--热部署配置-->
<!--fork:让Maven新开一个JVM进行编译,否则整个devtools可能会不生效-->
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
3、设置 IDEA 自动编译:File—> Settings—>Build...-> Compiler 勾选 Build Project automatically(IDEA 旧版是 Make project automatically)。有时候勾选了之后,修改 .java 文件内容后并没有实时的自动编译,此时可以在需要编译的时候按 Ctrl + 9 或者 Build -> Build Project(编译项目),或者 Rebuild Project(重新编译项目)。
4、按快捷键 "ctrl + shift + alt + /",选择 Registry ,然后勾选 Compiler autoMake allow when app running(应用程序运行时允许编译器自动生成)。
5、设置完成之后,修改后端代码后,比如新增方法,spring-boot-devtools 会监测 classpath 下的文件是否发生变化,如果发生变化,则会自动重启应用(修改前端代码不需要重启),所以个人建议热部署时可以关闭自动编译,改为手动按 Ctrl + 9 快捷键编译,否则随便修改一点代码,自动编译导致服务器自动重启了,很麻烦。
6、spring-boot-devtools 热部署方式的自动重启,属于比较快速的重启,与直接手动点击重启按钮是不一样的,所以如果应用中使用了 TCP、UDP 等等绑定了监听端口,则自动重启时可能会产生端口冲突。
7、默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public 这些静态资源目录下的文件修改不会使应用重启,但是会重新加载(配置文件修改会自动重启,比如 application.yml)。
IDEA + springloaded 热部署
1、上面 spring-boot-devtools 方式的缺陷是修改后端代码后服务要自动重启,当程序比较大,启动时间比较长时,这也是能以忍受的,而 springloaded 刚好能解决这个问题。
2、Spring Loaded 是一个用于在 JVM 运行时重新加载类文件更改的 JVM 代理,允许动态修改代码并实时加载生效。
3、springloaded 同样会监控 classes 文件,当有文件被改动时,系统会重新加载类文件,不用重启服务。
4、设置 IDEA 自动编译:File—> Settings—>Build...-> Compiler 勾选 Build Project automatically(IDEA 快捷键:重新编译文件 Ctrl+Shift+F9,编译项目 Ctrl+F9)
5、引用 springloaded 依赖:
<!-- springloaded 热部署-->
<!-- https://mvnrepository.com/artifact/org.springframework/springloaded -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.8.RELEASE</version>
<!--打包时不用带出-->
<scope>provided</scope>
</dependency>
在线演示源码:pom.xml · 汪少棠/java-se - Gitee.com
6、添加启动参数:打开 Edit Configurations 配置,在 VM options 中指定本地下载好的 springloaded 代理(标绿色的路径以实际为准):
-javaagent:D:softwaremavenRepositoryorgspringframeworkspringloaded1.2.8.RELEASEspringloaded-1.2.8.RELEASE.jar -noverify
7、某些特殊情况下,可能仍然需要重新启动服务,比如:
(1)第三方注解的修改不能自动加载,比如 @RequestMapping 上的 url 路径变化了.
(2)application.properties, yml 配置文件的修改
(3)log4j 等配置文件的修改不能即时生效。
IDEA 同一应用多实例启动
1、很多的时候,我们需要在 IDEA 工具中对一个 Java 应用启动多次,比如分布式开发测试、集群开发测试等,它们的业务代码都完全一样,如果写多份完全有点多余,这是可以通过 IDEA 进行设置从而启动多份。
2、本文演示环境:Java JDK 1.8 + IDEA 2018 + Spring Boot 2.1.3。操作步骤如下:
- 1) 打开 Run -> Edit Configurations.,进入 Run/Debug Configurations 面版
- 2)勾选右上角的 "allow runing in parallel",表示 "允许并行运行"。它默认是不允许并行运行的。
- 3) 然后修改全局配置文件(其中端口必须修改,否则启动时发生冲突导致失败),再次启动。
注意事项:IDEA 中应用多实例并行启动时,需要关闭 Spring Boot 项目自动编译刷新 中的热部署,否则配置文件中修改端口,新启动实例的时候,原先的实例因为热部署检测到资源文件变化也会自动重启,从而导致多实例启动失败!
方式2:IDEA多实例启动服务.pdf。
最后
以上就是优美金鱼为你收集整理的IDEA + Spring boot devtools 热部署 与 多实例启动Spring boot devtools 开发人员工具IDEA + spring-boot-devtools 热部署IDEA + springloaded 热部署IDEA 同一应用多实例启动的全部内容,希望文章能够帮你解决IDEA + Spring boot devtools 热部署 与 多实例启动Spring boot devtools 开发人员工具IDEA + spring-boot-devtools 热部署IDEA + springloaded 热部署IDEA 同一应用多实例启动所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复