`

Spring AOP会忽略从父类继承的方法

阅读更多

Spring aop会忽略从父类继承的方法。

在项目中,我想拦截所有的dao类,结构如下:

dao

   ---| generic

            ---| GenericDao

   ---| GoodsDao

   ---| SupermarketDao

   ---| UserDao

下面的三个dao 继承自 统一的父类(GenericDao),在beans.xml中,我只拦截了下面的三个子类,beans.xml中的部分代码如下:

<aop:aspect id="myAspect" ref="loggerAop">
			<aop:pointcut id="daoPointcut" expression="execution(* com.shop.jn.dao.*.*(..))" />
			<aop:around pointcut-ref="daoPointcut" method="around" />
		</aop:aspect>

 结果从GenericDao 中继承下来的方法都没有被aop 拦截到。

如何解决这个问题呢?

让切面也匹配父类(同时匹配父类和子类),修改如下:

 

<aop:aspect id="myAspect" ref="loggerAop">

           <aop:pointcut id="daoPointcut" expression="execution(* com.shop.jn.dao..*.*(..))" />

           <aop:around pointcut-ref="daoPointcut" method="around" />

       </aop:aspect>

 

 

分享到:
评论
4 楼 w_mojian180 2018-08-07  
这个方法对于子类来说是没效果的
3 楼 505547425 2017-03-16  
              
2 楼 hw1287789687 2013-12-31  
http://hw1287789687.iteye.com/blog/1997640
1 楼 kjmmlzq19851226 2013-06-13  
简单的来说spring aop有两种方式,全接口方式使用的是jdk的动态代理,针对接口;而非接口方式使用的是cglib,这种方式类似jdk动态代理,在运行期间生成的代理对象是针对目标类扩展的子类

相关推荐

Global site tag (gtag.js) - Google Analytics