spring-AOP框架(基于AspectJ注解配置AOP)

基于AspectJ注解配置AOP

1、加入jar包:

要在Spring应用中使用AspectJ注解,必须在classpath下包含AspectJ类库:aopalliance.jar、aspectj.weaver.jar、spring-aspects.jar和spring-aop.jar。

2、在配置文件中加入aop的命名空间:

  1)将aop Schema添加到<beans>根元素中

  2)要在springIOC容器中启用AspectJ注解支持,只要在Bean配置文件中定义一个空的XML元素<aop:aspectj-autoproxy>

  3)当SpringIOC容器侦测到Bean配置文件中的<aop:aspectj-autoproxy>元素时,会自动为与AspectJ切面匹配的Bean创建代理

3、基于注解方式:

  1)在配置文件中加入如下配置:<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

  2)把横切面关注点的代码抽象到切面的类中

    a. 切面首先是一个IOC容器的bean,即加入@Component注解

    b. 切面还需要加入@Aspect注解

  3)在类中声明各种通知(其中:AspectJ支持5钟注解通知:@Before-前置通知,在方法执行之前执行;@After-后置通知,在方法执行之后执行;@AfterRuning-返回通知,在方法返回结果之后执行;@AfterThrowing-异常通知,在方法抛出异常之后;@Around-环绕通知,围绕着方法执行)

    a. 声明一个方法

    b. 在方法前加入@Before注解 

  4)可以在通知方法中声明一个类型为JoinPoint的参数,然后就能访问链接细节,如方法名称和参数

  5)  使用@Order注解指定切面的优先级,值越小优先级越高,例:@Order(1)

  6)  使用@Pointcut来声明切入点表达式

  

 前置通知:

 后置通知:

返回通知:

异常通知:

环绕通知:(不常用)

原文地址:https://www.cnblogs.com/lijianda/p/8667416.html