一尘不染

将Spring依赖项注入JPA EntityListener

spring

我试图将Spring依赖项注入到JPA EntityListener中。这是我的侦听器类:

@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);
    }


}

这是我的Entity类:

@RooJavaBean
@RooToString
@RooJpaActiveRecord
@EntityListeners(PliListener.class)
public class Pli implements Serializable{
...

但是,我的依赖项(即evenementPliRepository)始终为null。


阅读 740

收藏
2020-04-12

共1个答案

一尘不染

注入对无状态bean的依赖关系的一种方法是将依赖关系定义为“静态”,创建一个setter方法,以便Spring可以注入依赖关系(将其分配给静态依赖关系)。

将依赖项声明为静态。

static private EvenementPliRepository evenementPliRepository;

创建一个方法,以便Spring可以注入它。

@Autowired
public void init(EvenementPliRepository evenementPliRepository) 
{
    MyListenerClass.evenementPliRepository = evenementPliRepository;
    logger.info("Initializing with dependency ["+ evenementPliRepository +"]"); 
}
2020-04-12