代码如下
public interface IXService{
public void doAdd();
}
抽象类
public abstract class AbstractXService{
public void doAdd(){
//do something
innerMethod();
}
protected abstract void innerMethod();
}
具体实现
public class DXService{
protected void innerMethod(){...}
}
事务配置,采用cglib来增强
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* DXService.*(..))" advice-ref="txAdvice"/>
</aop:config>
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="doAdd" propagation="REQUIRED" rollback-for="java.lang.Throwable"/>
</tx:attributes>
</tx:advice>
期望是在doAdd方法上加事务管理,但实际调用的时候doAdd上并没有事务管理。原因是cglib不会对父类方法做增强
分享到:
相关推荐
CGLib,全称为Code Generation Library,是一款Java平台上的代码生成库,主要用于运行时动态创建类的实例或者增强已有类的功能。它在Java世界里扮演着一个重要的角色,尤其是在AOP(面向切面编程)和ORM(对象关系...
- 当目标对象实现了一个或多个接口时,Spring会使用JDK动态代理;如果目标对象没有实现任何接口,则使用CGLIB动态代理。 3. **配置示例:** - 引入Spring AOP命名空间: ```xml <!-- 定义切入点 --> (* ...
2. **Spring**:Spring框架是一个轻量级的应用程序开发框架,主要功能包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect Oriented Programming, AOP)等,它能够简化企业级应用的开发过程。...
在Java开发中,热部署(Hot Deployment)是一个关键特性,它允许开发者在应用程序运行时更新代码,而无需停止和重新启动服务。这对于大型系统尤其重要,因为重启过程可能会浪费大量时间和资源。Java虚拟机(JVM)...