diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/config/EnableJdbcAuditingHsqlIntegrationTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/config/EnableJdbcAuditingHsqlIntegrationTests.java index ebbefa01f..b523a2fda 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/config/EnableJdbcAuditingHsqlIntegrationTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/config/EnableJdbcAuditingHsqlIntegrationTests.java @@ -28,6 +28,7 @@ import java.util.function.Consumer; import org.assertj.core.api.SoftAssertions; import org.jetbrains.annotations.NotNull; import org.junit.Test; +import org.springframework.context.ApplicationListener; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; @@ -41,7 +42,9 @@ import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.auditing.DateTimeProvider; import org.springframework.data.domain.AuditorAware; import org.springframework.data.relational.core.mapping.NamingStrategy; +import org.springframework.data.relational.core.mapping.event.BeforeSaveEvent; import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Component; import org.springframework.test.context.ActiveProfiles; /** @@ -176,6 +179,23 @@ public class EnableJdbcAuditingHsqlIntegrationTests { }); } + @Test // DATAJDBC-390 + public void auditingListenerTriggersBeforeDefaultListener() { + + configureRepositoryWith( // + AuditingAnnotatedDummyEntityRepository.class, // + TestConfiguration.class, // + AuditingConfiguration.class, // + OrderAssertingEventListener.class) // + .accept(repository -> { + + AuditingAnnotatedDummyEntity entity = repository.save(new AuditingAnnotatedDummyEntity()); + + assertThat(entity.id).isNotNull(); + + }); + } + /** * Usage looks like this: *
@@ -296,4 +316,20 @@ public class EnableJdbcAuditingHsqlIntegrationTests {
return () -> Optional.of("user");
}
}
+
+ /**
+ * An event listener asserting that it is running after {@link AuditingConfiguration#auditorAware()} was invoked and
+ * set the auditing data.
+ */
+ @Component
+ static class OrderAssertingEventListener implements ApplicationListener
- * An instance of this class gets registered when you apply {@link EnableJdbcAuditing} to your Spring config.
+ * An instance of this class gets registered when you enable auditing for Spring Data JDBC.
*
* @author Kazuki Shimizu
* @author Jens Schauder
* @author Oliver Gierke
- * @see EnableJdbcAuditing
*/
@RequiredArgsConstructor
-public class RelationalAuditingEventListener implements ApplicationListener