spring aop的面试题
时间: 2023-09-20 21:14:52 浏览: 120
Spring AOP是一种面向切面编程的技术,它的设计原理是基于动态代理和反射机制。在Spring AOP中,关注点是指程序中的横切逻辑,而横切关注点是指被关注点穿插进来的代码逻辑。
在Spring AOP中,主要有两种关注点的实现方式:基于AspectJ的实现和基于Spring AOP的实现。AspectJ是一个独立的AOP框架,可以在编译期或运行期织入切面。而Spring AOP是Spring框架提供的AOP实现,它使用动态代理来实现切面的织入。
在Spring AOP中,关注点和横切关注点的不同在于:
- 关注点是程序中需要关注的特定功能或行为,比如日志记录、权限控制等。它可以被多个横切关注点所使用。
- 横切关注点是指与关注点相关的代码逻辑,在Spring AOP中,它被定义为切面中的通知(advice)。横切关注点在程序执行过程中被织入到关注点中。
Spring AOP的工作流程如下:
1. Spring首先创建IOC容器,并扫描被@Service和@Component修饰的类,将它们创建为对象并放入IOC容器中。
2. 接下来,Spring寻找由@Aspect修饰的切面类,并获取切面类中的所有方法。
3. Spring进一步寻找切面类中带有合法表达式的方法。
4. 然后,Spring检查扫描到的所有类,并将找到的方法与这些类进行对照,找出有这些方法的类(即被代理类)。
5. 最后,Spring根据找到的被代理类和切面类创建动态类的动态对象,并将它们放入IOC容器中。
除了以上提到的基于AspectJ和Spring AOP的实现,还有其他一些AOP框架,如JBoss AOP等,在Java中也可以用来实现AOP的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Spring AOP常见面试题整理](https://blog.csdn.net/weixin_39309402/article/details/100877521)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [springAOP面试题](https://blog.csdn.net/m0_54705036/article/details/123420385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文