我的项目有
现在我已经在如下服务中编写了EntityListener:
public class TestEntityListener {
@PrePersist
public void prePersist(Resource r) {
perform("INSERTED");
}
@PreUpdate
public void preUpdate(Resource r) {
perform("UPDATED");
}
@PreRemove
public void preRemove(Resource r) {
perform("DELETED");
}
@Transactional
private void perform(String target) {
CallLogBaseDaoJpa callLogBaseDaoJpa = BeanUtil.getBean(CallLogBaseDaoJpa.class);
//callLogBaseDaoJpa.persist(target));
}
}
Bean Util如下:
@Service
public class BeanUtil implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
public static <T> T getBean(Class<T> beanClass) {
return context.getBean(beanClass);
}
}
现在我必须使用@TestListener注释实体类(资源),但由于我的实体位于域项目中并且无法访问服务,所以我无法注释。
为减轻这种情况,我尝试按如下所示将Resource子类化,并在此子类中添加了EntityListener。我可以将此Resource1保留在服务中,所有此类引用都将为我解决,但是在这种情况下,我的测试监听器不会被调用
@Entity
@EntityListeners({TestEntityListener.class})
public class Resource1 extends Resource
{
private static final long serialVersionUID = -6723893476944789741L;
}
1)我期望通过将原始实体方法子类化来调用侦听器
放错了位置?难道这不起作用吗?
2)我是否做得对?或者有人可以建议在不更改依赖关系的情况下采用其他任何方法?