Spring如何实现AOP环绕通知

2025-05-10 02:28:05

1、首先确保项目中有aop所需要的jar包,我这里截图不全,仅供参考。所需的依赖包基本如下:aopalliance-1.0.jaraspectjweav髫潋啜缅er-1.6.11.jarcommons-logging-1.1.1.jarspring-aop-3.0.5.RELEASE.jarspring-aspects-3.0.5.RELEASE.jarspring-beans-3.0.5.RELEASE.jarspring-context-3.0.5.RELEASE.jarspring-context-support-3.0.5.RELEASE.jarspring-core-3.0.5.RELEASE.jarspring-expression-3.0.5.RELEASE.jar

Spring如何实现AOP环绕通知

2、在你自己spring的核心配置文件中加入aop的命名空间 如下:

Spring如何实现AOP环绕通知

3、现在创建一个java类,把这个类声明为切面类,在头信息加入注解@Aspect。使用@Aspect 注解的类, Spring 将会把它当作一个特殊的Bean(一个切面,也就是不对这个类本身进行动态代理) 。

Spring如何实现AOP环绕通知

4、在头信息中加入注解@Component,将这个类放入容器中。@component 猾诮沓靥(把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="稆糨孝汶;" class=""/>)

Spring如何实现AOP环绕通知

5、基于切面中的方法,编写自己的业务逻辑代码,先定义切点"execution(* com.caissa.caissauic.dubbo.service.impl.*.*(..)像粜杵泳)",即哪些方法需要执行这些方法。如图所示:

Spring如何实现AOP环绕通知

6、编写切面的前置方法,执行目标方法前拦截到的方法,在目标方法之前的通知。该方法没有特殊注意的地方,只需要一个连接点:JoinPoint,即可获取拦截目标方法以及请求参数等。例如:

Spring如何实现AOP环绕通知

7、编写切换的后置方法,在目标方法执行之后的通知,不管是否抛异常,这个方法始终被执行。跟前置方法同样,只需要一个连接点JoinPoint,就可以获取当前结束的方法名称。

Spring如何实现AOP环绕通知

8、编写环绕通知方法,环绕通知需要携带ProceedingJoinPoint 这个类型的参数,ProceedingJoinPoint类型的参数可以决定是否执行目标函数,环绕通知必须有返回值。

Spring如何实现AOP环绕通知

9、最后别忘了在spring核心配置文件中声明aspect的代理对象,初始化spring容器的时候,spring自动对切点生成代理对象。如图所示:

Spring如何实现AOP环绕通知

10、保存代码,运行项目,调用监听的接口方法,下面是部分执行结果(可以根据自己的业务逻辑编写代码):

Spring如何实现AOP环绕通知
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢