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> |
相关推荐
- **Spring AOP 会忽略从父类继承的方法**:这里指出 Spring AOP 在处理继承时的一些限制,并提供了解决方案。 - **Java 删除空行**:这部分介绍了几种常见的删除字符串或文本文件中空行的方法。 - **Nexus 添加新 ...
2:继承:子类继承父类,子类可以拥有父类中已定义的方法,并且子类可以修改父类中的方法使其更适合特殊需求。 3:多台:不同对象对统一消息作出不同响应称之为多态 4:抽象:忽略与当前主题无关的那些方面,将...
4. `@Inherited`:使子类继承父类的注解,但只适用于类,不适用于方法和字段。 5. `@Repeatable`:从Java 8开始引入,允许同一位置重复使用相同的注解。 六、实际应用 1. Spring框架:Spring大量使用注解进行依赖...
- **继承**:允许类之间共享属性和方法,子类可以从父类继承特性。Java支持单一继承。 - **封装**:隐藏对象内部状态和实现细节,仅通过公共接口访问。Java中通过访问修饰符(public, private, protected)实现封装。 ...
- **继承**:子类可以从父类继承属性和行为,并可扩展或覆盖这些行为。 - **多态**:允许不同子类型的对象对同一消息作出不同的响应。 - **抽象**:关注事物的核心特征,忽略不相关细节。 #### 六、运行时异常与...
- **继承**:一种代码复用机制,允许新类(子类)继承现有类(父类)的属性和方法。这样不仅减少了代码的冗余,还提高了代码的可维护性。 - **封装**:通过隐藏对象的内部状态和实现细节,并对外提供一组有限的...
- **继承**:允许子类继承父类的属性和方法,实现代码复用。Java支持单继承,但可以通过接口实现多重继承的效果。 - **封装**:隐藏对象的属性和实现细节,仅对外提供公共访问方式,通过访问修饰符如`private`, `...
- **继承**:允许创建新类(子类)从现有类(父类)继承属性和方法,促进代码复用。 - **封装**:隐藏类内部的实现细节,只提供公共接口供外部访问,保证数据安全。 - **多态性**:一个接口可以有不同的实现,...
- **继承**:子类继承父类的属性和方法,实现代码的复用和类的层次结构。 - **封装**:隐藏对象的内部实现,只提供公共接口供外部访问,保证数据安全。 - **多态性**:允许不同类型的对象对同一消息做出响应,...
- **继承**:子类继承父类的属性和方法,促进代码复用。 - **封装**:隐藏对象的实现细节,只对外提供公共接口进行交互。 - **多态性**:不同类型的对象能响应相同的消息,增强代码灵活性。 2. **访问修饰符**:...
- **继承**: 继承是一种强大的机制,它允许创建一个新类(子类)来继承现有类(父类)的属性和行为。这样可以在不重复编写相同代码的情况下,实现功能的复用和扩展。 - **封装**: 封装是指隐藏对象的内部状态和...
- EJB(Enterprise JavaBeans)是Java EE的一部分,用于构建分布式企业级应用,Spring框架提供了轻量级替代方案,如依赖注入、AOP(面向切面编程)和Spring Boot。 13. **数据结构&算法&计算机基础**: - 数据...
1. `@Override`:确保方法是重写父类或接口中的方法,如果找不到对应方法,编译器会报错。 2. `@Deprecated`:标记过时的类或方法,当使用它们时,编译器会发出警告。 3. `@SuppressWarnings`:抑制特定类型的编译...
2. 继承与多态:继承允许一个类(子类)继承另一个类(父类)的特性,使得代码复用和扩展变得简单。多态则允许子类对象以父类类型引用,提供不同的实现,增强了程序的灵活性。 3. 接口:接口在Java中用于定义公共...