- AspectJ框架可以使用注解和xml配置文件两种方式 实现 AOP
- 在 spring2.0以后,spring新增了对AspectJ 切点表达式的支持;Aspect1.5新增注解功能,通过 JDK5的注解技术,能直接在类中定义切面;新版本的 spring 框架,也都建议使用 AspectJ 来实现 AOP。所以说在 spring AOP 的核心包 Spring-aop-3.2.jar 里面也有对 AspectJ 的支持
- 使用AspectJ框架需要在pom.xml导入依赖
<!-- AOP核心功能,例如代理工厂等 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.2.7.RELEASE</version> </dependency> <!-- 支持切入点表达式等 --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.13</version> </dependency>
<!-- 支持aop相关注解 --> <!-- <dependency> <groupId>org.springframework</groupId> <artifactId>aspectjrt</artifactId> <version>5.2.7.RELEASE</version> </dependency> -->
|
注
- aspectjweaver包含aspectjrt,所以我们只需要引入aspectjweaver依赖包就可以了
类型匹配语法
AspectJ类型匹配的通配符:
通配符 |
描述 |
* |
匹配任何数量字符; |
.. |
匹配任何数量字符的重复,如在类型模式中匹配任何数量子包;而在方法参数模式中匹配任何数量参数。 |
+ |
匹配指定类型的子类型;仅能作为后缀放在类型模式后边。 |
示例
类匹配 |
描述 |
java.lang.String |
匹配String类型; |
java.*.String |
匹配java包下的任何“一级子包”下的String类型; 如匹配java.lang.String,但不匹配java.lang.ss.String |
java..* |
匹配java包及任何子包下的任何类型; 如匹配java.lang.String、java.lang.annotation.Annotation |
java.lang.*ing |
匹配任何java.lang包下的以ing结尾的类型; |
java.lang.Number+ |
匹配java.lang包下的任何Number的自类型; 如匹配java.lang.Integer,也匹配java.math.BigInteger |