1.AspectJ的概念

  @AspectJ类似于Java注解的普通Java类

  Spring可以使用AspectJ来做切入点解析

  AOP的运行时仍旧是纯的Spring AOP,对AspectJ的编译器或者织入无依赖性.

2.配置方式

  注解方式 -- @Configuration

              @EnableAspectJAutoProxy

              任何拥有@Aspect注解的bean都将被Spring自动识别并应用

              注释的类可以有方法和字段,他们也可以有切入点(pointcut),通知(Advice)和引入(introduction)声明

              @Aspect注解不能够通过类路径自动检测发现,需要配合使用@Component注释或者在XML配置bean

  xml文件方式

           --<aop:aspectj-autoproxy/>

           

3.ASpectJ为编译期的AOP,检查代码并匹配连接点与切入点的代价昂贵

  好的切入点包括

    --选择特定类型的连接点(execution/get/set/call/handler)

    --确认连接点范围(within/withincode)

    --匹配上下文信息(this/target/@annotation)

    

4.Around advice

  使用@Around注释来声明,通知方法的第一个参数必须是ProcessdingJoinPoint类型

  再通知内部调用processdingjoinpoint的proceed()方法会引导至真正的方法,传入一个Object[]对象,数组中的值将被作为参数传递给方法

  

5. * 使用execution表达式

* 使用已经定义表达式的方法名 --@Before("pointcut()")

@AfterReturning(pointcut="implPointcut()",returning="args")

@AfterThrowing(pointcut="pointcut()",throwing="e")

@After("pointcut()")

      @Pointcut("execution(* com.aspectj.impl.*Impl.*(..))")

      @Pointcut("within(com.aspectj.impl.*)")

      

6.Advice扩展

  1>给advice传递参数 -- 方法的参数可以是任何类的对象

    在@before时+&&args(account,..)

    定义注解传参

        @Before("pointcut()&&@annotation(methodValue)")

        public void beforeWithAnnotation(Methodvalue methodValue)

    SpringAOp可以处理泛型类的声明和使用方法的参数

    通知和切入点注解有一个额外的"argNames"属性,它可以用来指定所注解的方法的参数名

    --如果第一参数时JoinPoint,ProceedingJoinPoint,JoinPoint.StaticPart,那么可以忽略它 -- -- ,argNames="bean,auditable,.."

  2>Introductions

    允许一个切面声明一个通知对象实现指定接口,并且提供了一个接口实现类来代表这些对象

    introduction使用@DeclareParents进行注解,这个注解用来定义匹配的类型拥有一个新的parent

  3>切面实例化模型 -- 高级主题

    "perthis"切面通过指定@Aspect注解perthis子句实现

    每个独立的service对象执行时都会创建一个切面实例

    service对象的每个方法在第一次执行的时候创建切面实例,切面在service对象失效的同时失效

    

http://blog.csdn.net/jacxuan/article/details/53454819

AcpectJ注释方式配置AOP的更多相关文章

  1. 基于配置文件的方式配置AOP

    之前说的都是通过注释的方式配置,接下来说说如何使用配置文件配置AOP 还是原来的代码,去掉所有注释,接下来配置最基本的几个bean. 然后使用<aop:config>标签进行配置,然后配切 ...

  2. xml的方式配置AOP:Aspect Oriented Programming

    在某些类中, 什么时机, 做什么事情 切入点(point-cut): 在某些类中(Class<?>[] itfc = new Class<?>[] { IStudentServ ...

  3. Spring_基于配置文件的方式配置AOP

    applicationContext-xml.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...

  4. 22Spring基于配置文件的方式配置AOP

    直接看代码: package com.cn.spring.aop.impl; //加减乘除的接口类 public interface ArithmeticCalculator { int add(in ...

  5. Annotation方式配置AOP

    package com.xk.spring.kp04_aop.aop.s02_annotation; public interface IStudentService { public void sa ...

  6. spring-AOP框架(基于配置文件的方式配置AOP)

    .xml: ref-指向,order-指定优先级

  7. SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP

    AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...

  8. Spring(二十):Spring AOP(四):基于配置文件的方式来配置 AOP

    基于配置文件的方式来配置 AOP 前边三个章节<Spring(十七):Spring AOP(一):简介>.<Spring(十八):Spring AOP(二):通知(前置.后置.返回. ...

  9. spring aop注解方式与xml方式配置

    注解方式 applicationContext.xml 加入下面配置 <!--Spring Aop 启用自动代理注解 --> <aop:aspectj-autoproxy proxy ...

随机推荐

  1. 牛客网暑期ACM多校训练营(第十场)D Rikka with Prefix Sum (数学)

    Rikka with Prefix Sum 题意: 给出一个数组a,一开始全为0,现在有三种操作: 1.  1 L R W,让区间[L,R]里面的数全都加上W: 2.  2     将a数组变为其前缀 ...

  2. Windows7下的Run运行命令一览表

    按住Windows键(就是左边Ctrl和Alt之间那个印windows徽标的键,简称Win键)+R,即可弹出运行对话框,在里面输入黑体字符即可运行相应程序.相比XP这次新增了不少新东西. 添加/删除程 ...

  3. Java 文件hashCode

    public static void main(String args[]) { try { System.out.println(getMD5Checksum("RationalRoseE ...

  4. c# 动态调用webservice 转录一下

    1. client call method   [上线的话也只是需要改一下wsdl地址就可以了] /// <summary> /// 动态webservice调用 /// </sum ...

  5. 使用srvany.exe把程序安装成windows服务

    srvany.exe介绍 srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说srva ...

  6. loj 数列分块入门 6 9(区间众数)

    6 题意 给出一个长为\(n\)的数列,以及\(n\)个操作,操作涉及单点插入,单点询问,数据随机生成. 题解 参考:http://hzwer.com/8053.html 每个块内用一个\(vecto ...

  7. strtol函數的用法 atof, atoi, atol, strtod, strtoul

    相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include <stdlib.h>定义函数: long int strtol(const ch ...

  8. ZOJ 3937 More Health Points (2016 浙江省赛 B题,可持久维护凸壳)

    题目链接  2016 ZJCPC Problem B 题意  CF 660F的树上版本. 其他做的方法都差不多,关键是把凸壳放到树上. 每次确定扔掉几个元素的时候直接$O(1)$修改(先不清楚这个位置 ...

  9. poj3693(后缀数组)

    poj3693 题意 给出一个串,求重复次数最多的连续重复子串,输出字典序最小的. 分析 论文 例8(P21). Sparse-Table算法预处理出任意两个后缀串的LCP. code #includ ...

  10. 求int最大值以及int二进制

    求int最大值:(((unsigned int)(~0))>>1) 求int的2进制串 string str = ""; int iNum = 100; for(int ...