Spring AOP(Aspect Oriented Programming),即面向切面编程,是OOP(Object Oriented Programming,面向对象编程)的补充和完善。

OOP引入的核心概念包括:封装,继承和多态等;

AOP则可以深入到方法内部,在某个切入点或者切面处采取静态”织入”的方式,在尽量不影响和改动原有代码的基础上,将新功能融入到原有的核心业务逻辑中。

在pom中引入依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

  创建日志注解:

@Documented
@Inherited //注解可被标注类的子类继承
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface TKLog {
/**
* 描述
*/
String description() default "";
}

  创建aop的处理器:

@Slf4j
@Aspect
@Component
public class LogInterceptor {
//标注切入点,即标有@TKLog的类
//@within:拦截被注解标注的类的所有方法,@annotation:拦截被注解的方法
@Pointcut("@within(com.tk.spring.aop.annotation.TKLog)")
public void pointcut() { } //当标有@TKLog的类中的方法被调用前后,该方法会被执行
@Around("pointcut()")
public void doExecute(ProceedingJoinPoint point) throws Throwable {
log.info("方法即将执行:" + point.getSignature().getName());
Object result = point.proceed();
log.info("方法执行结束:" + result.toString());
}
}

  最后在需要的controller层中添加@TKLog注解以及启动类加@EnableAspectJAutoProxy,就可以进行日志打印。

最新文章

  1. 提供程序不支持 DatabaseExists
  2. 修正 ColorPanel 选色缓慢问题
  3. makefile详解 嵌套执行make,定义命令包
  4. shelll函数求两个输入数字之和
  5. 微软开放技术发布开源的微软云服务器底盘管理器 (Chasis Manager) 软件
  6. MySQL创建用户权限结果Trigger失败
  7. 使IIS Express支持其他网络客户端访问
  8. .NET Reflector 7.6.1.824安装及破解(刚试了,绝对能用)
  9. Linux 内核协议栈之TCP连接关闭
  10. [Swift]LeetCode151. 翻转字符串里的单词 | Reverse Words in a String
  11. Java 8 新特性:6-Optional类
  12. Fluent动网格【5】:部件变形
  13. Linux修改/etc/profile配置错误command is not found自救方法
  14. 分类算法之朴素贝叶斯分类(Naive Bayesian classification)
  15. 缓存中使用的ReentrantReadWriteLock锁
  16. pages bookmarks for machine learning domain
  17. 第三次Scrum编码冲刺!!!
  18. 20155323 第四次实验 Android程序设计实验报告
  19. git pull时出现vim窗口的解决办法
  20. Linq to SQL Like Operator

热门文章

  1. CTF相关
  2. 用一道模板题理解多源广度优先搜索(bfs)
  3. 论文解读《Understanding the Effective Receptive Field in Deep Convolutional Neural Networks》
  4. 常用物联网应用层协议(1)——先说HTTP协议
  5. APP后台架构20191205
  6. App 后台架构
  7. spring强行注入和引用的例子
  8. Windows10系统下Hadoop和Hive开发环境搭建填坑指南
  9. C#练习题 if
  10. leetcode114:valid-sudoku