Инъекционные услуги в Entity Listener ...? - PullRequest
0 голосов
/ 14 мая 2018

Возможно ли каким-либо образом @ Inject Service-Bean (скажем, сессионный компонент) в Слушатель сущности?

Рассмотрим следующий сценарий в качестве примера

Организация:

@Entity
@EntityListeners(BookListener.class)
public class Book {
    // fields, getters & setters
}

Класс полезности:

@Singleton
public class BookUtil {

    private BookRepository bookRepo;
    private List<Book> bookList;

    @Inject
    public BookUtil(BookRepository bookRepo){
        this.bookRepo = bookRepo;
        this.bookList = this.bookRepo.findAll();
    }

    public void refreshBooks(){
        this.bookList = this.bookRepo.findAll();
    }

}

Слушатель:

public class BookListener {

    @Inject
    BookUtil bookUtil // --> CAN THIS BE ACHIEVED?

    @PostPersist
    private void refreshCache(Book b){
        bookUtil.refreshBooks();
    }
}

Я попробовал несколько вещей, о которых мог подумать, но ни одна из них не привела к успешному внедрению экземпляра BookUtil. Я мог бы вручную создать экземпляр, который работает. Но я предпочитаю инъекцию, так как тогда BookRepository (внутри BookUtil) также будет внедрен, и мне не придется беспокоиться об этом

...