diff --git a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java index a825bd255..7782ebaac 100644 --- a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -301,12 +301,13 @@ public abstract class AbstractMappingContext type = typeInformation.getType(); + E entity = null; try { write.lock(); - final E entity = createPersistentEntity(typeInformation); + entity = createPersistentEntity(typeInformation); // Eagerly cache the entity as we might have to find it during recursive lookups. persistentEntities.put(typeInformation, entity); @@ -331,18 +332,18 @@ public abstract class AbstractMappingContext(this, entity)); - } - - return entity; - } catch (BeansException e) { throw new MappingException(e.getMessage(), e); } finally { write.unlock(); } + + // Inform listeners + if (applicationEventPublisher != null && entity != null) { + applicationEventPublisher.publishEvent(new MappingContextEvent(this, entity)); + } + + return entity; } /*