I have implemented post insert and post update event listeners using hibernate integrator. And listeners are working as expected. I need to call a service whenever that event is triggered, So I autowired that service and it is null. What am I missing here? My integrator
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) {
}
}
Property Configurer class -
@Configuration public class PropertyConfigurer implements HibernatePropertiesCustomizer {
@Override public void customize(Map<String, Object> hibernateProperties) { hibernateProperties.put("hibernate.integrator_provider", (IntegratorProvider) () -> Collections.singletonList(EntityIntegrator.INSTANCE)); } }
Listener Implementation.
@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;
}
}
New to spring boot pardon if I am doing anything terribly wrong