当前位置: 代码迷 >> 综合 >> Aspect Oriented Programming with Spring 官网学习 面向切面笔记
  详细解决方案

Aspect Oriented Programming with Spring 官网学习 面向切面笔记

热度:82   发布时间:2023-12-15 00:06:03.0

所需jar包:spring-aspects.jar \ aspectjweaver.jar

1.spring 面向切面使用的动态代理技术

  • 对接口的实现类做面向切面操作时,用的 JDK 的动态代理
  • 对没有实现接口的类做面向切面操作是使用的cglib

2.如何使用

  • 首先把Spring面向切面的开关打开 如果使用的XML配置文件则添加:<aop:aspectj-autoproxy/> (注意:需按Spring官网引入XML Schema-based configuration.) 如果是使用注解启动Spring则添加注解:@EnableAspectJAutoProxy

  • 然后定义切面类添加@Aspect 注解
  • 然后定义@Ponitcut 和  处理方法 @Before @After @Around(pointcut支持与或操作 例如:@Pointcut("anyPublicOperation() && inTrading()"))
  • 其中定义的Pointcut意为切点,其中写上表达式表达切点在哪些方法上,其中execution(* com.learn.bean.*.*(..)) 表达此切点在com.learn.bean包下面的所有方法上
  • 然后通过处理函数引用切点(注意:此种引用方式 需注意Aspectjweaver.jar的版本匹配,jdk7不能用此包的1.6版本,jdk8我是用的Aspectjweaver1.8.6.jar)
  • 当然,也可以直接在处理函数上写上表达式

3.AspectJ表达式 (官网复制下来的)

  • execution For matching method execution join points. This is the primary pointcut designator to use when working with Spring AOP.
  • within Limits matching to join points within certain types (the execution of a method declared within a matching type when using Spring AOP).
  • this Limits matching to join points (the execution of methods when using Spring AOP) where the bean reference (Spring AOP proxy) is an instance of the given type.
  • target  Limits matching to join points (the execution of methods when using Spring AOP) where the target object (application object being proxied) is an instance of the given type.
  • args  Limits matching to join points (the execution of methods when using Spring AOP) where the arguments are instances of the given types.
  相关解决方案