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 8092e1130..218eb0342 100644 --- a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -368,12 +368,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, Optional.of(entity)); @@ -402,18 +403,18 @@ public abstract class AbstractMappingContext(this, entity)); - } - - return Optional.of(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 Optional.of(entity); } /*