面试题: Spring AOP是如何实现的? 它和AspectJ有什么区别?

Spring AOP是如何实现的? 它和AspectJ有什么区别?

  • 背景
  • 答案
    • SpringAOP实现
    • 与AspectJ区别
    • AOP 的几种实现方案
  • 个人评价

背景

想换工作, 学习一下面试题, 算是学习记录的输出.

答案

SpringAOP实现

Spring AOP 是利用的动态代理的机制, 如果一个Bean 实现了接口, 那么就会采用JDK动态代理来生成接口的代理对象, 如果一个Bean 没有实现接口, 那么就会采用CGLIB 来生成当前类的一个代理对象. 代理对象的作用就是代理原来的Bean 对象, 代理对象在执行某个方法时, 会在该方法的基础上增加一些切面逻辑, 使得我们可以利用AOP 来实现一些诸如登录校验, 权限控制, 日志记录等统一功能.

与AspectJ区别

Spring AOP 和 AspectJ 之间没有特别强的关系, AOP 表示面向切面编程, 这是一种思想, 各个组织或个人通过自己的技术来实现这种思想, AspectJ 就是其中之一, 它会在编译期对类进行增强, 所以要用AspectJ, 得用AspectJ 开发的编译器来编译你的项目. 而Spring AOP则是采用动态代理实现AOP, 只不过觉得AspectJ 中设计的那几个注解比较好, 比如: @Before, @After, @Around等, 同事也不给程序员带来困扰, 所以Spring AOP中对这几个注解进行了支持, 虽然注解是相同的, 但是底层的实现逻辑是完全不同的.

AOP 的几种实现方案

面试题: Spring AOP是如何实现的? 它和AspectJ有什么区别?_第1张图片

个人评价

2023年10月6日13:32:14
老师的答案已经很好了.

你可能感兴趣的:(spring,java,后端)