Когда я использовал Hibernate 4 в предыдущем приложении Spring, следующего было достаточно, чтобы зарегистрировать весь перехват событий вставки / обновления / удаления БД.Был простой класс конфигурации и фактическая реализация перехватчика.
класс конфигурации
@Component
public class HibernateEntityEventListenerConfig {
@Autowired
private SessionFactory sessionFactory;
@Autowired
private HibernateEntityEventListener entityEventListener;
@PostConstruct
public void registerListeners() {
final EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory)
.getServiceRegistry().getService(EventListenerRegistry.class);
registry.getEventListenerGroup(EventType.PRE_INSERT).appendListener((PreInsertEventListener) entityEventListener);
registry.getEventListenerGroup(EventType.PRE_UPDATE).appendListener((PreUpdateEventListener) entityEventListener);
registry.getEventListenerGroup(EventType.PRE_DELETE).appendListener((PreDeleteEventListener) entityEventListener);
}
}
класс перехватчика
@Component
public class HibernateEntityEventListener implements PreInsertEventListener,
PreUpdateEventListener,
PreDeleteEventListener {
@Override
public boolean onPreInsert(PreInsertEvent event) {
//...
}
@Override
public boolean onPreUpdate(PreUpdateEvent event) {
//...
}
@Override
public boolean onPreDelete(PreUpdateEvent event) {
//...
}
Но когда я портировал этот код в приложение Spring Boot 2.1.2 с использованием Hibernate 5, я начал получать следующую ошибку запуска о том, что SessionFactory не найдено:
Field sessionFactory in util.HibernateEntityEventListenerConfig required
a bean of type 'org.hibernate.SessionFactory' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.hibernate.SessionFactory' in your configuration.
Я гуглилвокруг, и я нашел только более сложный и запутанный код, которому я не доверяю или не понимаю, https://stackoverflow.com/a/48471227/1005607
Сейчас это слишком сложно, и мне просто нужен простой способ связать этот перехватчик.Как правильно вставить перехватчики и обойти эту ошибку SessionFactory?