我已经使用休眠集成器实现了后插入和后更新事件侦听器。听众正在按预期工作。每当触发该事件时,我都需要调用服务,因此我自动连接了该服务并且它为空。我在这里想念什么?我的集成商
public class EntityIntegrator implements Integrator {
public static final EntityIntegrator INSTANCE = new EntityIntegrator();
@Override
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory,
SessionFactoryServiceRegistry serviceRegistry) {
final EventListenerRegistry eventListenerRegistry =
serviceRegistry.getService(EventListenerRegistry.class);
EntityEventListener listener = new EntityEventListener();
eventListenerRegistry.appendListeners(
EventType.POST_INSERT,
listener
);
eventListenerRegistry.appendListeners(
EventType.POST_UPDATE,
listener
);
}
@Override
public void disintegrate(SessionFactoryImplementor sessionFactory,
SessionFactoryServiceRegistry serviceRegistry) {
}
}
属性配置器类 -
@Configuration 公共类 PropertyConfigurer 实现 HibernatePropertiesCustomizer {
@Override public void customize(Map<String, Object> hibernateProperties) { hibernateProperties.put("hibernate.integrator_provider", (IntegratorProvider) () -> Collections.singletonList(EntityIntegrator.INSTANCE)); } }
监听器实现。
@Service
public class EntityEventListener implements PostInsertEventListener, PostUpdateEventListener {
Logger logger = LogManager.getLogger(EntityEventListener.class);
@Autowired
CommonService commonService ;
/**
* To handle any operations to be done post insert.
*/
@Override
public void onPostInsert(PostInsertEvent event) {
if(event.getEntity() instanceof EntityClass)
{
commonservice.test((EntityClass) event.getEntity()); //commonService is null
}
}
/**
* To handle any operations to be done post update.
*/
@Override
public void onPostUpdate(PostUpdateEvent event) {
logger.info("Inside post update event : {}" , event.getEntity().getClass().getName());
if(event.getEntity() instanceof WalletTransaction)
{
}
}
@Override
public boolean requiresPostCommitHanding(EntityPersister persister) {
return false;
}
}
如果我做错了什么,请原谅我的弹簧靴新手