spring基础02-动态代理方法互调,静态成员类
在日常使用,还有面试中,经常会涉及到AOP的相关知识,AOP虽好,但是有一些小的细节注意不到,可能会被坑;
1.动态代理类的方法互调,被调用的方法会不会生成代理?
2.静态成员类,调用过程中会不会生成代理?
对以上这些问题进行测试:
首页,这是AOP切面代码
@Component @Aspect public class AopTest { @Pointcut("execution(public * com.wuzhiaite.javaweb.spring.serveice.AopServiceTest.*(..))") public void AopTest(){ }
@Before("AopTest()") public void doBefore(){ System.out.println("doBefore"); }
@After("AopTest()") public void doAfter(){ System.out.println("doAfter"); } }
接下来:被代理类的代码
@Service public class AopServiceTest { public void testMethod(){ new Inner().innerMethod(); System.out.println("testMethod"); this.testMethod2(); } public void testMethod2(){ System.out.println("testMethod22222222"); } public static class Inner{ public void innerMethod(){ System.out.println("innerMethod"); } } }
再接下来,测试以下:
@RunWith(SpringJUnit4ClassRunner.class) @Slf4j @EnableAspectJAutoProxy public class SpringBootJavawebBaseApplicationTests { @Autowired private AopServiceTest service; @Test public void aopTest1(){ service.testMethod(); new AopServiceTest.Inner().innerMethod();//静态内部类并不会生成代理类 } }
测试出来的结果是:
很显然,静态成员类和方法内部调用的方法并没有生成代理
【推荐】国内首个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月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏