`

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动态代理,在运行期间生成的代理对象是针对目标类扩展的子类

相关推荐

    iteye的技术博客集合

    - **Spring AOP 会忽略从父类继承的方法**:这里指出 Spring AOP 在处理继承时的一些限制,并提供了解决方案。 - **Java 删除空行**:这部分介绍了几种常见的删除字符串或文本文件中空行的方法。 - **Nexus 添加新 ...

    java面试题

    2:继承:子类继承父类,子类可以拥有父类中已定义的方法,并且子类可以修改父类中的方法使其更适合特殊需求。 3:多台:不同对象对统一消息作出不同响应称之为多态 4:抽象:忽略与当前主题无关的那些方面,将...

    java5.0新特性总结--Annotation系统学习整理笔记

    4. `@Inherited`:使子类继承父类的注解,但只适用于类,不适用于方法和字段。 5. `@Repeatable`:从Java 8开始引入,允许同一位置重复使用相同的注解。 六、实际应用 1. Spring框架:Spring大量使用注解进行依赖...

    java面试宝典

    - **继承**:允许类之间共享属性和方法,子类可以从父类继承特性。Java支持单一继承。 - **封装**:隐藏对象内部状态和实现细节,仅通过公共接口访问。Java中通过访问修饰符(public, private, protected)实现封装。 ...

    java 面试题

    - **继承**:子类可以从父类继承属性和行为,并可扩展或覆盖这些行为。 - **多态**:允许不同子类型的对象对同一消息作出不同的响应。 - **抽象**:关注事物的核心特征,忽略不相关细节。 #### 六、运行时异常与...

    2024java面试题

    - **继承**:一种代码复用机制,允许新类(子类)继承现有类(父类)的属性和方法。这样不仅减少了代码的冗余,还提高了代码的可维护性。 - **封装**:通过隐藏对象的内部状态和实现细节,并对外提供一组有限的...

    200道Java面试题

    - **继承**:允许子类继承父类的属性和方法,实现代码复用。Java支持单继承,但可以通过接口实现多重继承的效果。 - **封装**:隐藏对象的属性和实现细节,仅对外提供公共访问方式,通过访问修饰符如`private`, `...

    Java经典面试题集(详尽版)

    - **继承**:允许创建新类(子类)从现有类(父类)继承属性和方法,促进代码复用。 - **封装**:隐藏类内部的实现细节,只提供公共接口供外部访问,保证数据安全。 - **多态性**:一个接口可以有不同的实现,...

    java软件工程师面试题题集

    - **继承**:子类继承父类的属性和方法,实现代码的复用和类的层次结构。 - **封装**:隐藏对象的内部实现,只提供公共接口供外部访问,保证数据安全。 - **多态性**:允许不同类型的对象对同一消息做出响应,...

    Java面试题集,全面,面试必备的利器,附答案

    - **继承**:子类继承父类的属性和方法,促进代码复用。 - **封装**:隐藏对象的实现细节,只对外提供公共接口进行交互。 - **多态性**:不同类型的对象能响应相同的消息,增强代码灵活性。 2. **访问修饰符**:...

    面试资料大全(宝典)

    - **继承**: 继承是一种强大的机制,它允许创建一个新类(子类)来继承现有类(父类)的属性和行为。这样可以在不重复编写相同代码的情况下,实现功能的复用和扩展。 - **封装**: 封装是指隐藏对象的内部状态和...

    java面试题+java面试题及答案整理

    - EJB(Enterprise JavaBeans)是Java EE的一部分,用于构建分布式企业级应用,Spring框架提供了轻量级替代方案,如依赖注入、AOP(面向切面编程)和Spring Boot。 13. **数据结构&算法&计算机基础**: - 数据...

    Java注解Annotation解析

    1. `@Override`:确保方法是重写父类或接口中的方法,如果找不到对应方法,编译器会报错。 2. `@Deprecated`:标记过时的类或方法,当使用它们时,编译器会发出警告。 3. `@SuppressWarnings`:抑制特定类型的编译...

    OgrenciIsi

    2. 继承与多态:继承允许一个类(子类)继承另一个类(父类)的特性,使得代码复用和扩展变得简单。多态则允许子类对象以父类类型引用,提供不同的实现,增强了程序的灵活性。 3. 接口:接口在Java中用于定义公共...

Global site tag (gtag.js) - Google Analytics