- 简介
- 它不属于spring;
- AspectJ是一个AOP的框架;
- 定义了AOP语法;
- 有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。
- AspectJ实现AOP的方式
- 基于AspectJ的xml配置文件;
- 基于AspectJ的注解。
- 表达式案例
//配置com.bao.User下的add()
execution(* com.bao.User.add(..))
//配置com.bao.User下的所有方法
execution(* com.bao.User.*(..))
//配置所有包下的所有方法
execution(**.*(..))
//配置所有包下的a开头方法
execution(* a*(..))
//配置包下的所有类的所有方法
execution(* com.service.*.*(..)))
- 注解实现AOP
导入相关约束,配置xml文件:
<!-- 1、开启AOP自动代理 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<!-- 2、配置对象 如下示例-->
<bean id="book" class="com.demo2.Book"></bean>
<bean id="mybook" class="com.demo2.MyBook"></bean>
- 配置增强所在类注解为@Aspect;
- 在增强上配置增强的类型和切入点(如:@Before(value="execution(* com.demo2.*(..))"));
- xml配置文件实现AOP
导入相关约束,配置xml文件:
<!-- 1、配置对象 -->
<bean id="book" class="com.demo.Book"></bean>
<bean id="mybook" class="com.demo.MyBook"></bean>
<!-- 2、配置AOP -->
<aop:config>
<!-- 配置切入点 (Book类中的方法) -->
<aop:pointcut expression="execution(* com.demo.Book.*(..))" id="pointcut1" />
<!-- 切面 -->
<aop:aspect ref="mybook">
<!-- 前置增强 -->
<aop:before method="fun" pointcut-ref="pointcut1"/>
<!-- 环绕增强 -->
<aop:around method="around" pointcut-ref="pointcut1"/>
</aop:aspect>
</aop:config>
- 注意
环绕增强需要把增强添加参数ProceedingJoinPoint pjp,然后在方法内调用切入点(pjp.proceed();),在proceed()上下可以放入其他方法。
陈天相 发布了110 篇原创文章 · 获赞 101 · 访问量 8万+ 私信 关注