着手使用@AspectJ
来源:互联网 发布:东莞大朗淘宝电商培训 编辑:程序博客网 时间:2024/05/21 16:55
在使用@AspectJ之前,首先必须保证所使用的Java版本是5.0及以上版本,否则无法使用注解技术。
Spring在处理@AspectJ注解表达式时,需要将Spring的asm模块添加到类路径中。asm是轻量级的字节码处理框架,因为Java的反射机制无法获取入参名,Spring就利用asm处理@AspectJ中所描述的方法入参。
此外,Spring采用AspectJ提供的@AspectJ注解类库及相应的解析类库,需要在pom.xml文件中添加aspectj.weaver和aspectj.tools类包的依赖。
AspectJ使用
①编写目标类
②编写切面
③通过AspectProxyFactory为目标类生成织入PreGreetingAspect切面代理
此外还可以通过xml配置的方式实现
不同的增强类型
①@Before
②AfterReturning
③Around
④AfterThrowing
⑤After
⑥DeclareParents
切点函数详解
切点函数是AspectJ表达式语言的核心,也是使用AspectJ进行切面定义的难点
@annotation():表示标注了某个注解的所有方法
例如:@AfterReturning("@annotation(com.smart.anno.NeedTest)") //后置增强切面
@execution()
1.通过方法签名定义切点
execution(public * *(..):匹配所有目标类的public方法,第一个*代表返回类型,第二个*代表方法签名,而..代表任意
入参。
execution(* *To(..)):匹配所有以To为后缀的方法。
2.通过类定义切点
execution(* com.smart.Waiter.*(..)):匹配Waiter接口的所有方法。
execution(* com.smart.Waiter+.*(..)):匹配Waiter接口的所有方法以及子类所特有的方法。
3.通过类包定义切点
execution(* com.smart.*(..)):匹配com.smart包下的所有类的所有方法。
execution(* com.smart..*(..)):匹配com.smart包、子包下所有类的所有方法。
execution(* com..*.*Dao.find*(..)):匹配包名前缀为com的任何包下类名后缀为Dao的方法,方法名
必须以find为前缀。
- 着手使用@AspectJ
- 着手使用ThinkPHP
- AspectJ使用经验
- AspectJ使用经验
- AspectJ使用经验
- spring AspectJ 基本使用
- 使用@AspectJ注解
- 使用@AspectJ注解
- aspectJ切面使用
- @AspectJ使用示例
- AspectJ原理与使用
- AspectJ 的使用
- Android中使用AspectJ
- AspectJ 使用技巧
- 使用aspectj声明事务
- androidStudio中使用 AspectJ
- AspectJ使用示例
- Aspectj简单使用(一)
- css学习总结
- nginx的SSI
- java从入门到入土(log4j)
- battery service 修改 52832
- 使用批处理实现telnet自动登陆并执行ping命令
- 着手使用@AspectJ
- 嵌入式学习日记(十四)
- 海思arm平台AAC音频转码cpu占用高、效率低的问题解决
- 西部开源运维学习unit5
- poj 3468 A Simple Problem with Integers 线段树 成段更新
- 重建二叉树
- 客户端浏览器向服务器发起http请求的全过程
- 学生信息管理系统总结
- linux下tar命令解压到指定的目录