将 Spring 依赖项注入 JPA EntityListener [英] Injecting a Spring dependency into a JPA EntityListener
问题描述
我正在尝试将 Spring 依赖项注入 JPA EntityListener.这是我的听众课程:
I am trying to inject a Spring dependency into an JPA EntityListener. Here is my listener class:
@Configurable(autowire = Autowire.BY_TYPE, dependencyCheck = true)
public class PliListener {
@Autowired
private EvenementPliRepository evenementPliRepository;
@PostPersist
void onPostPersist(Pli pli) {
EvenementPli ev = new EvenementPli();
ev.setPli(pli);
ev.setDateCreation(new Date());
ev.setType(TypeEvenement.creation);
ev.setMessage("Création d'un pli");
System.out.println("evenementPliRepository: " + evenementPliRepository);
evenementPliRepository.save(ev);
}
}
这是我的实体类:
@RooJavaBean
@RooToString
@RooJpaActiveRecord
@EntityListeners(PliListener.class)
public class Pli implements Serializable{
...
但是,我的依赖项(即evenementPliRepository
)始终为空.
However, my dependency (i.e. evenementPliRepository
) is always null.
有人可以帮忙吗?
推荐答案
在无状态 bean 上注入依赖项的一个 hack,是将依赖项定义为静态",创建一个 setter 方法以便 Spring 可以注入依赖项(分配它到静态依赖).
A hack to inject dependencies on stateless beans, is to define the dependency as "static", create a setter method so that Spring can inject the dependency (assigning it to the static dependency).
将依赖声明为静态.
static private EvenementPliRepository evenementPliRepository;
创建一个方法,以便 Spring 可以注入它.
Create a method so that Spring can inject it.
@Autowired
public void init(EvenementPliRepository evenementPliRepository)
{
MyListenerClass.evenementPliRepository = evenementPliRepository;
logger.info("Initializing with dependency ["+ evenementPliRepository +"]");
}
更多详细信息,请访问:http://blog-en.lineofsightnet.com/2012/08/dependency-injection-on-stateless-beans.html
More details at: http://blog-en.lineofsightnet.com/2012/08/dependency-injection-on-stateless-beans.html
这篇关于将 Spring 依赖项注入 JPA EntityListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!