本篇分享的内容是在相同类中方法间调用时Aop失效处理方案,该问题我看有很多文章描述了,不过大多是从事务角度分享的,本篇打算从日志aop方面分享(当然都是aop,失效和处理方案都是一样),以下都是基于springboot演示;

  • 快速定义个日志Appender
  • 快速定义个拦截器和日志注解(aop)
  • 模拟相同类中方法间调用时aop失效
  • Aop失效处理方案(就两种足够了)

快速定义个日志Appender

日志我还是喜欢log4j,大部分朋友也同样吧,这里lombok与log4j结合来完成我们的日志,如下maven包(最新mvn还是建议去官网找):

复制代码
 1         <dependency> 2             <groupId>org.projectlombok</groupId> 3             <artifactId>lombok</artifactId> 4         </dependency> 6         <dependency> 7             <groupId>org.slf4j</groupId> 8             <artifactId>slf4j-api</artifactId> 9             <version>2.0.0-alpha0</version>10         </dependency>11         <dependency>12             <groupId>org.slf4j</groupId>13             <artifactId>slf4j-log4j12</artifactId>14             <version>2.0.0-alpha0</version>15         </dependency>
复制代码

先继承log4j的AppenderSkeleton重写下append方法,简单记录下就行,如下:

复制代码
 1 public class MyLogAppend extends AppenderSkeleton {  2     private String author;  3  4     public void setAuthor(String author) {  5         this.author = author;  6     }  7  8     @Override  9     protected void append(LoggingEvent loggingEvent) { 10         System.out.println( 11                 JsonUtil.formatMsg("date -- {},level -- {},message -- {}", 12                         LocalDate.now(), 13                         loggingEvent.getLevel(), 14                         loggingEvent.getMessage())); 15     } 16 17     @Override 18     public void activateOptions() { 19         super.activateOptions(); 20         System.out.println("author:" + this.author); 21     } 22 23     @Override 24     public void close() { 25         this.closed = true; 26     } 27 28     @Override 29     public boolean requiresLayout() { 30         return false; 31     } 32 }