@EnableAspectJAutoProxy注解标签
前言:
为什么在启动类加上@EnbleAspectJAutoProxy就能支持AOP
@EnableAspectJAutoProxy
首先我们跟入到源码中,进入到@EnbleAspectJAutoProxy类中,我们可以发现它有两个成员属性
proxyTargetClass:
表明该类采用CGLIB代理还是使用JDK的动态代理,如果选择为true则是cglib,false则尽可能选择JDK,如果bean没有实现任何接口,就算是false也会选择cglib。
exposeProxy:
解决内部调用不能使用代理的场景,默认为false表示不处理,true则表示这个代理对象的副本可以通过AopContext.currentProxy()获得(ThreadLocal里面),从而
我们可以很方便得在Spring框架上下文中拿到当前代理对象(处理事务时很方便)
通过注解将类当作Bean管理起来的方式
@Controller @Service @Repository @Component 标记的类
@Bean 标记的方法
@Import
SpringAOP的总体流程
注册解析AOP的服务
解析和加载横切逻辑
将横切逻辑织入目标Bean中
观察代码:
在AspectJAutoProxyRegistrar类上的registerBeanDefinitions()方法打上断点观察代码:
当我们Main方法加载容器的时候,便会执行到AbstractApplicationContext的refresh()方法。在方法刚开始执行的时候,会去调用作为上下文中的Bean注册工厂的后置处理器也就是invokeBeanFactoryPostProcessors()方法。
能看到注册AOP创建类的操作是在调用容器级别的后置处理器方法中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)