AspectJ的介绍和使用方法

  1. 它不属于spring;
  2. AspectJ是一个AOP的框架;
  3. 定义了AOP语法;
  4. 有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。
  • AspectJ实现AOP的方式
  1. 基于AspectJ的xml配置文件;
  2. 基于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>
  1. 配置增强所在类注解为@Aspect;
  2. 在增强上配置增强的类型和切入点(如:@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()上下可以放入其他方法。

发布了124 篇原创文章 · 获赞 119 · 访问量 51万+

猜你喜欢

转载自blog.csdn.net/qq_39706570/article/details/104131914
今日推荐