首页 > 编程语言 > 详细

Spring AOP实现

时间:2020-05-10 21:11:08      阅读:61      评论:0      收藏:0      [点我收藏+]

1.1.1      实现步骤

l  POM.xml

              <!-- 基于AspectJ的aop依赖 -->

              <dependency>

                     <groupId>org.springframework</groupId>

                     <artifactId>spring-aspects</artifactId>

                     <version>5.0.7.RELEASE</version>

              </dependency>

              <dependency>

                     <groupId>aopalliance</groupId>

                     <artifactId>aopalliance</artifactId>

                     <version>1.0</version>

              </dependency>

 

l  编写通知(增强类,一个普通的类)

 技术分享图片

 

 

l  配置通知,将通知类交给spring IoC容器管理

 技术分享图片

 

 

l  配置AOP 切面

 技术分享图片

 

 

1.1.2      切入点表达式

***切入点表达式的格式:

       execution([修饰符] 返回值类型 包名.类名.方法名(参数))

       ** execution:必须要

       ** 修饰符:可省略

       ** 返回值类型:必须要,但是可以使用*通配符
       ** 包名  :

              ** 多级包之间使用.分割

              ** 包名可以使用*代替,多级包名可以使用多个*代替

              ** 如果想省略中间的包名可以使用 ..

       ** 类名

              ** 可以使用*代替

              ** 也可以写成*DaoImpl

       ** 方法名:

              ** 也可以使用*好代替

              ** 也可以写成add*

       ** 参数:

              ** 参数使用*代替

              ** 如果有多个参数,可以使用 ..代替

 技术分享图片

 

 

1.1.3      通知类型

***通知类型(五种):前置通知、后置通知、最终通知、环绕通知、异常抛出通知。

***前置通知:

       ***执行时机:目标对象方法之前执行通知

       ***配置文件:<aop:before method="before" pointcut-ref="myPointcut"/>

       ***应用场景:方法开始时可以进行校验

***后置通知:

       ***执行时机:目标对象方法之后执行通知,有异常则不执行了

       ***配置文件:<aop:after-returning method="afterReturning" pointcut-ref="myPointcut"/>

       ***应用场景:可以修改方法的返回值

***最终通知:

       ***执行时机:目标对象方法之后执行通知,有没有异常都会执行

       ***配置文件:<aop:after method="after" pointcut-ref="myPointcut"/>

       ***应用场景:例如像释放资源

***环绕通知:

       ***执行时机:目标对象方法之前和之后都会执行。

       ***配置文件:<aop:around method="around" pointcut-ref="myPointcut"/>

       ***应用场景:事务、统计代码执行时机

***异常抛出通知:

       ***执行时机:在抛出异常后通知

       ***配置文件:<aop:after-throwing method=" afterThrowing " pointcut- ref="myPointcut"/>

       ***应用场景:包装异常

1.2       基于AspectJ的注解实现

1.2.1      实现步骤

l  编写切面类(注意不是通知类,因为该类中可以指定切入点

 技术分享图片

 

 

l  配置切面类

<context:component-scan base-package="com.kkb.spring"/>

l  开启AOP自动代理

      技术分享图片

 

 

 

1.2.2      环绕通知注解配置

@Around

       作用:

              把当前方法看成是环绕通知。属性:

       value:

              用于指定切入点表达式,还可以指定切入点表达式的引用。

 

 技术分享图片

 

 

1.2.3      定义通用切入点

***使用@PointCut注解在切面类中定义一个通用的切入点,其他通知可以引用该切入点

 

 技术分享图片

 

 

1.2.4      不使用XML的配置方式

@Configuration

@ComponentScan(basePackages="com.kkb")

@EnableAspectJAutoProxy

public class SpringConfiguration {

}

Spring AOP实现

原文:https://www.cnblogs.com/jingzhi-sksk/p/12864604.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!