ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

AspectJ的介绍和使用方法

2020-02-01 12:36:24  阅读:520  来源: 互联网

标签:.. 方法 配置 介绍 AOP execution com 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()上下可以放入其他方法。

陈天相 发布了110 篇原创文章 · 获赞 101 · 访问量 8万+ 私信 关注

标签:..,方法,配置,介绍,AOP,execution,com,AspectJ
来源: https://blog.csdn.net/qq_39706570/article/details/104131914

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有