如何解决springboot自动重启问题
作者:离岸&南墙
这篇文章主要介绍了如何解决springboot自动重启问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
springboot自动重启
主要原因
如果应用使用 spring-boot-devtools ,则只要classpath下的文件有变动,它就会自动重启。这在使用IDE时非常有用,因为可以很快得到代码改变的反馈。
默认情况下,classpath下任何指向文件夹的实体都会被监控,注意一些资源的修改比如静态assets,视图模板不需要重启应用。
在项目工程中,如果你的日志是输出在classpath下,而且是RollingFile,那么你的idea肯定会不断重启,我的就是这种情况。
spring-boot-devtools为springboot热部署模块
主要作用:监控是否修改代码,直接进行编译,快速得到项目响应
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>true</scope> </dependency>
解决办法
1.在项目pom.xml文件中将相应热部署模块删除,重新加载项目依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>true</scope> </dependency>
2.在配置文件中更改devtools状态
将devtools工具状态更改为false
注意:如果每次修改后台代码需要重新启动项目,进行编译,仅修改前端代码无需重启项目,可以直接在浏览器端看到修改后的内容
自动重启springboot jar程序,让程序用不宕机
有时候我们已经会遇到服务突然掉线的问题,但是我们一直不知道,一直等到有人通知,或者自检的时间才发现。
现在我为了确保服务在停止后,能够自动重启,做一个自动检测脚本xxx.sh,放到系统定时任务里面,几分钟检测一次查看服务在不在线,如果不在就重启服务。
sh脚本的写法:
#!/bin/bash num=`ps -ef|grep jar包名|grep -v grep|wc -l` if [ $num -lt 1 ];then source /etc/profile nohup java -jar /xxx/xxx/xxx.jar >> /xxx/xxx/log-server-$(date +%Y-%m-%d).log 2>&1 else echo $(date '+%Y-%m-%d %H:%M:%S') $@ >> /xxx/xxx/log.log fi
crontab -e 查看定时任务,
点击 insert 按键编写定时任务,
# 注释 */3 * * * * /xxx/xxx/start.sh
定时任务编写完成后,点击 Esc 按键,输入“:wq” 在点击回车,退出
最后给sh脚本文件设置权限
chmod 777 start.sh
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。