




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第解析SpringBoot中使用LoadTimeWeaving技术实现AOP功能Signaturesignature=pjp.getSignature();
System.out.println(signature+"start.....");
ceed();
System.out.println(signature+"end......");
}
@Aspect注解表示这是一个切面类
配置类
/**
*@author:takumiCX
*@create:2025-12-19
@Configuration
@ComponentScan("com.takumiCX.ltw")
@EnableLoadTimeWeaving(aspectjWeaving=AUTODETECT)
publicclassCustomLtwConfig{
}
通过@@EnableLoadTimeWeaving开启LTW功能,可以通过属性aspectjWeaving指定LTW的开启策略
ENABLED
开启LTW
DISABLED
不开启LTW
AUTODETECT
如果类路径下能读取到META-INF/aop.xml文件,则开启LTW,否则关闭
在META-INF文件夹下编写aop.xml文件
aop.xml文件内容
xmlversion="1.0"encoding="UTF-8"
!DOCTYPEaspectjPUBLIC"-//AspectJ//DTD//EN""/aspectj/dtd/aspectj.dtd"
aspectj
!--要织入切面的目标类--
weaver
includewithin="com.takumiCX.ltw..*"/
/weaver
!--切面类--
aspects
aspectname="com.takumiCX.ltw.aspect.LogMethodInvokeAspect"/
/aspects
/aspectj
这样我们的Spring容器就能加载该文件读取到描述目标类和切面类的相关信息,容器在加载目标类的class文件到jvm之前,会将切面类中定义的增强逻辑织入到class文件中,真正加载到jvm中的是织入切面后的class文件,因而通过该class文件创建出的目标类的实例,不需要经过动态代理就能实现AOP相关功能。
测试类
/**
*@author:takumiCX
*@create:2025-12-20
@RunWith(SpringRunner.class)
@SpringBootTest(classes={CustomLtwConfig.class})
publicclassLTWTest{
@Autowired
privateLtwBeanltwBean;
@Test
publicvoidtestLTW()throwsInterruptedException{
ltwBean.test();
}
最后的结果如下
方法调用前后分别记录的开始和结束的日志信息,说明我们的切面成功的织入到了目标类。但是这里可能有一个疑问,这真的是LTW(LoadTimeWeaving)通过在类加载期织入切面起到的作用吗?有没有可能是LTW没起作用,是SpringAOP默认通过运行期生成动态代理的方式实现的AOP。
我们的LogMethodInvokeAspect切面类上并没有加@Component注解向容器注册,并且配置类CustomLtwConfig上也没有加@EnableAspectJAutoProxy注解开启Aspectj的运行时动态代理,所以这里基于动态代理的AOP并不会生效。
为了验证我们的想法,将aop.xml文件删除
重新运行测试代码
AOP没起到作用,说明刚才的AOP功能确实是通过LTW技术实现的。
当我们给切面类加上@Component注解,给配置类加上@EnableAspectJAutoProxy
/**
*@author:takumiCX
*@create:2025-12-19
@Aspect
@Component
publicclassLogMethodInvokeAspect{
/**
*@author:takumiCX
*@create:2025-12-19
@Configuration
@ComponentScan("com.takumiCX.ltw")
@EnableAspectJAutoProxy
@EnableLoadTimeWeaving(aspectjWeaving=AUTODETECT)
publicclassCustomLtwConfig{
}
再次运行测试类时,发现AOP又生效了,这时候类路径下并没
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年市政工程新业态试题及答案
- 新媒体技术:理论、案例与应用(全彩微课版) 课件全套 第1-8章 新媒体概述- 综合案例
- 执业医师实训考试试题及答案
- 安全技能考试题及答案
- 开发人才的有效途径计划
- 食堂急救设备管理协议
- 确立企业愿景促进全员参与的实践计划
- 工程项目管理学科交叉研究试题及答案
- 采购政策与管理培训协议
- 经济法概论知识点全景与试题及答案
- GB/T 16823.3-2010紧固件扭矩-夹紧力试验
- GB/T 16680-2015系统与软件工程用户文档的管理者要求
- DB44-T 2198-2019城乡社区协商工作规范-(高清现行)
- 失血性休克的救治课件
- 地下室开槽引流方案
- (必备)肌骨超声课件
- 螺旋式连续榨汁机的设计说明书
- DB36T 1570-2021花绒寄甲人工繁育技术规程_(高清版)
- 数控铣练手图纸(经典练习图纸)(共18页)
- 清产核资报表
- DOE(实验设计)与Minitab培训DOE案例
评论
0/150
提交评论