@Transactional在使用加载时间编织时未编织的超类中
2022-09-01 04:44:01
我正在从事的项目具有与下面的一个类似的结构:DAOs
/**
* Base DAO class
*/
@Transactional
public class JPABase {
@PersistenceContext
private EntityManager entityManager;
public void persist(Object entity) {
entityManager.persist(entity);
}
//some more methods in here
}
和
/**
* Generic DAO class implementation
*/
@Transactional
public abstract class GenericDao extends JpaBase {
//some methods in here
}
和
/**
* Specialized DAO class
*/
@Repository
@Transactional
public class PersonDao extends GenericDao {
//some methods in here
}
到目前为止,该项目使用编译时编织,但配置已更改为与 .<context:load-time-weaver/>
-javaagent:/opt/tomcat7-1/lib/spring-instrument.jar
由于已应用此更改,因此 不再编织 的注释。每次服务类调用对象上的方法时,都不会启动任何事务。JpaBase
GenericDao
@Transactional
persist
PersonDao
值得 注意:
- 这在过去使用编译时编织时曾经工作过。
- 中定义的所有方法都已正确编织,但继承的方法(例如)未编织。
PersonDao
persist(Object entity)
编译时编织和加载时间编织应该做同样的事情,只是在不同的时刻。为什么编织行为发生了变化?