最新公告
  • 欢迎您光临极客文库,登录获取更多编程学习资源及文章!立即加入我们
  • 基于AspectJ的AOP开发之注解开发方式(一)

    AspectJ简介

    AspectJ是一个基于Java语言的AOP框架

    Spring 2.0以后新增了对AspectJ切点表达式支持

    @AspectJ是AspectJ1.5新增功能,通过JDK5注入技术,允许直接在Bean类中定义切面

    新版本Spring框架建议使用AspectJ方式来开发AOP

    使用AspectJ需要导入Spring AOP和AspectJ相关Jar包

    使用AspectJ实现AOP

    – 注解方式

    – XML方式

    在以后Spring的开发过程中,我们都会使用AspectJ的方式,因为它比我们传统的AOP的开发更加灵活方便,这也是我们学习的重点。

    环境准备

    接下来我们将使用AspectJ的注解方式进行AOP的开发,先创建一个工程,然后引入相关的开发包,这里我们需要引入Spring的基本开发包、AOP的开发包以及AspectJ的相关开发包。

    新建一个项目,创建一个包com.jikewenku.aspectJ,通过maven引入基本开发包和上述开发包。

     
        
          org.springframework
          spring-core
          4.2.4.RELEASE
        
        
          org.springframework
          spring-context
          4.2.4.RELEASE
        
        
          org.springframework
          spring-beans
          4.2.4.RELEASE
        
        
          org.springframework
          spring-expression
          4.2.4.RELEASE
        
    
        
          aopalliance
          aopalliance
          1.0
        
        
          org.springframework
          spring-aop
          4.2.4.RELEASE
        
    
        
          org.aspectj
          aspectjweaver
          1.8.9
        
        
          org.springframework
          spring-aspects
          4.2.4.RELEASE
        
    
        
          org.springframework
          spring-test
          4.2.4.RELEASE
        
      
    

    新建一个配置文件applicationContext.xml

    
    
    
        
        
    
    
    

    @AspectJ提供不同的通知类型

    @Before 前置通知,相当于BeforeAdvice

    @AfterReturning 后置通知,相当于AfterReturningAdvice

    @Around 环绕通知,相当于MethodInterceptor

    @AfterThrowing 异常抛出通知,相当于ThrowAdvice

    @After 最终final通知,不管是否异常,该通知都会执行

    @DeclareParents 引介通知,相当于IntroductionInterceptor(不要求掌握)

    在通知中通过value属性定义切点

    通过execution函数,可以定义切点的方法切入

    语法:

    – execution(<访问修饰符>?<返回类型><方法名>(<参数>)<异常>)

    例如:

    – 匹配所有类public方法 execution(public * *(…))

    – 匹配指定包下所有类方法 execution(* com.jikewenku.dao.*(…)) 不包含子包

    – execution(* com.jikewenku.dao…*(…)) …*表示包、子孙包下所有类

    – 匹配指定类所有方法 execution(* com.jikewenku.service.UserService.*(…))

    – 匹配实现特定接口所有类方法 execution(* com.jikewenku.dao.GenericDAO+.*(…))

    – 匹配所有save开头的方法 execution(* save*(…))

    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » 基于AspectJ的AOP开发之注解开发方式(一)

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    参与讨论

    • 108会员总数(位)
    • 3700资源总数(个)
    • 5本周发布(个)
    • 2 今日发布(个)
    • 202稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级