示例代码如下:
package com.test.common; public interface BaseService { public void methodA(); } package com.test.user.service; public interface UserService extends BaseService { public void methodB(); } package com.test.user.service.impl; public class UserServiceImpl implements UserService { public void methodA(){ //do something... } public void methodB(){ //do something... } }
Spring 事务配置如下:
<aop:config>
<aop:pointcut id="servicePointcut" expression="execution(* com.test.user.service..*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcut"/>
</aop:config>
经过以上配置后,以为速个UserServiceImpl都在spring的事务管理范围内了,但当去调用UserServiceImpl.methodA方法时,发现methodA方法根本没有事务(断点后发现根本没有Spring的TransactionIntercepor的相关拦截)。造成这个问题的原因是因为spring默认情况下代理使用的时候JDK动态代理(必须要实现接口),这时候是代码接口上的方法而不是具体实现类上的方法,我的切入点声明的时候声明了只拦截 com.test.user.service包下所有类的所有方法,而methodA的方法是在另一个包下的,所以methodA的调用无法拦截到,解决办法就是把com.test.common包下的接口也声明到事务拦截范围内。
<aop:config>
<aop:pointcut id="servicePointcutC" expression="execution(* com.test.common..*(..))"/>
<aop:pointcut id="servicePointcut" expression="execution(* com.test.user.service..*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcutC"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcut"/>
</aop:config>
相关推荐
spring aop切面拦截指定类和方法实现流程日志跟踪 一般情况下,在不侵入业务代码的情况下,需要做流程日志跟踪是比较合理的 采用springaop切面思想
ssh2登陆+spring aop做拦截
死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序
springaop拦截controller日志
Spring AOP 拦截器 Advisor Spring AOP 拦截器 Advisor
项目中含有一整个springboot实现aop的功能,在拦截的方法形式上有两种一种是通过切点设置为拦截某个包路径下面的类中的所有方法;还有一种是基于某个自定义注解的.
spring aop 拦截 实例spring aop 拦截 实例spring aop 拦截 实例
springboot spring aop 拦截器 注解方式实现脱敏(涉及到:pom.xml -->application.properties --->启动类-->拦截器)
spring aop 拦截实例,下载下来直接就可以用了,很好很方便。
spring mvc利用aop日志实现对controller层的拦截
Spring Mvc AOP通过注解方式拦截controller等实现日志管理
Spring MVC AOP通过自定义注解方式拦截Controller等实现日志管理, springMVC里做添加AOP拦截,用于捕获异常。
spring aop 拦截系统操作日志和异常日志,存储到数据库中的全过程
演示了使用spring aop拦截方法进行数据验证,并结合注解实现
Spring 实现AOP需要三个第三方的jar包,分别是aspectjrt.jar,aspectjweaver.jar,aopalliance-1.0.jar
SpringAOP的日志拦截示例, 包含配置和代码
NULL 博文链接:https://conkeyn.iteye.com/blog/2354644
本篇文章主要介绍了详解Spring AOP 拦截器的基本实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
非常简单的aop例子,可以从该离子出发隐身出很多其他的问题的思考。
用spring写的小示例程序,拦截某一层的所有方法。可以在调用之前、之后、抛出异常拦截调用,日志打印。