公司的多个spring boot微服务,都打算使用aop log,如果每个项目都有一份相同的代码,很冗余。尝试了很多次,终于成功写个jar,让各个项目使用。
首先的想法是,写个基类,让各个项目继承子类,然而切面类不能继承。
然后写一个切面类,做成jar,让各个项目引入这个jar,再在
@ComponentScan(basePackages = "")中引入即可。
当然,熟悉切面编程的人,以上都是小儿科了。
参考 Spring使用ComponentScan扫描Maven多模块工程的其它模块
Spring Boot 使用AOP记录日志信息https://my.oschina.net/wangxincj/blog/2994864
AspectJ 5 Developer’s Notebook
既然写了日志,那么日志在哪里呢?
如果使用Log4j,那么需要包括或者指定log4j.properties,需要在指定文件夹(lib目录)
spring boot如果使用${catalina.home}这样的路径,在linux下,会在/tmp/tomcat.numbers.port/文件夹下
参考 log4j保留某段时间内的日志https://blog.csdn.net/u011450110/article/details/51690095
另外目前大量使用spring boot微服务,每次要关闭的时候都kill,实在糟糕,于是,找了资料,用命令关闭。
2个方法,一个是注册成服务。
另一个是打开endpoints及其shutdown,具体配置如下
endpoints:
enabled: true #打开
sensitive: false #无需口令
shutdown:
enabled: true
sensitive: false
management:
security:
enabled: false
address: 127.0.0.1 #仅限本机
需要关闭的时候 curl -X POST http://127.0.0.1:8012/shutdown 就可以了。
参考 有一篇详细讲了endpoints和management的安全性考虑的配置,可惜暂时找不到了。
注意,项目需要增加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
参考: https://www.cnblogs.com/sxdcgaq8080/p/10578053.html
https://www.jianshu.com/p/44ef43b282f0
SpringBoot 实战 之 优雅终止服务https://blog.csdn.net/chinrui/article/details/78685032