最近开发过程中,遇到了一个问题,在此记录一下:
启动多个springboot项目时,控制台总是打印Address already in use: JVM_Bind的警告,但项目又都是正常运行。刚开始没在意,反正系统可以用,后来闲来无事,就仔细查看了一番。追踪控制台打印的这条警告信息前面的语句,会发现都是在启用35729端口时出错。如下图:
后来百度了一下,35729为springboot热部署的的默认端口,原来是每个项目中都使用了热部署插件,所以,每个项目启动时都默认会使用35729端口。所以,只有第一个启动的项目,会成功运行热部署插件,其余项目均会出现这个端口启用失败的警告。
解决办法:
在application.propertie文件中配置热部署的端口,保证每个项目使用的端口不一致即可:
spring.devtools.livereload.port=35730
*注:springboot热部署即是指在修改后台代码时不用频繁手动重新启动项目,项目会自行重新启动。在idea中的使用方法为:
在pom.xml文件中引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>compile</scope>
</dependency>
<!--热部署配置-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork : 如果没有该项配置,肯定devtools不会起作用,即应用不会restart -->
<fork>true</fork>
</configuration>
</plugin>
然后,File --> Settings --> Build , Execution , Deployment --> Compiler --> Build project automatically 勾选 然后保存。保存完成后,CTRL+ALT+SHIFT+/ 组合键打开 Maintenance窗口选择Registry… ,找到compiler.automake.allow.when.app.running选项,进行勾选,即可使用。