Skip to content

Commit 1467d63

Browse files
Simplify auditing setup
Use IsNewAwareAuditingHandler factory method to avoid exposing additional beans. See: #1279
1 parent b71e3b9 commit 1467d63

File tree

2 files changed

+3
-80
lines changed

2 files changed

+3
-80
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/config/JdbcAuditingRegistrar.java

+2-40
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,15 @@
1717

1818
import java.lang.annotation.Annotation;
1919

20-
import org.springframework.beans.factory.ListableBeanFactory;
2120
import org.springframework.beans.factory.config.BeanDefinition;
2221
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
23-
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
2422
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
2523
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
2624
import org.springframework.data.auditing.IsNewAwareAuditingHandler;
2725
import org.springframework.data.auditing.config.AuditingBeanDefinitionRegistrarSupport;
2826
import org.springframework.data.auditing.config.AuditingConfiguration;
2927
import org.springframework.data.config.ParsingUtils;
30-
import org.springframework.data.mapping.context.PersistentEntities;
3128
import org.springframework.data.relational.auditing.RelationalAuditingCallback;
32-
import org.springframework.lang.Nullable;
3329
import org.springframework.util.Assert;
3430

3531
/**
@@ -39,6 +35,7 @@
3935
* @see EnableJdbcAuditing
4036
* @author Kazuki Shimizu
4137
* @author Jens Schauder
38+
* @author Christoph Strobl
4239
*/
4340
class JdbcAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport {
4441

@@ -69,7 +66,7 @@ protected String getAuditingHandlerBeanName() {
6966
@Override
7067
protected void postProcess(BeanDefinitionBuilder builder, AuditingConfiguration configuration,
7168
BeanDefinitionRegistry registry) {
72-
potentiallyRegisterJdbcPersistentEntities(builder, registry);
69+
builder.setFactoryMethod("from").addConstructorArgReference("jdbcMappingContext");
7370
}
7471

7572
@Override
@@ -96,39 +93,4 @@ protected void registerAuditListenerBeanDefinition(BeanDefinition auditingHandle
9693
registerInfrastructureBeanWithId(listenerBeanDefinitionBuilder.getBeanDefinition(),
9794
RelationalAuditingCallback.class.getName(), registry);
9895
}
99-
100-
static void potentiallyRegisterJdbcPersistentEntities(BeanDefinitionBuilder builder,
101-
BeanDefinitionRegistry registry) {
102-
103-
String persistentEntitiesBeanName = JdbcAuditingRegistrar.detectPersistentEntitiesBeanName(registry);
104-
105-
if (persistentEntitiesBeanName == null) {
106-
107-
persistentEntitiesBeanName = BeanDefinitionReaderUtils.uniqueBeanName("jdbcPersistentEntities", registry);
108-
109-
// TODO: https://github.com/spring-projects/spring-framework/issues/28728
110-
BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(PersistentEntities.class) //
111-
.setFactoryMethod("of") //
112-
.addConstructorArgReference("jdbcMappingContext");
113-
114-
registry.registerBeanDefinition(persistentEntitiesBeanName, definition.getBeanDefinition());
115-
}
116-
117-
builder.addConstructorArgReference(persistentEntitiesBeanName);
118-
}
119-
120-
@Nullable
121-
private static String detectPersistentEntitiesBeanName(BeanDefinitionRegistry registry) {
122-
123-
if (registry instanceof ListableBeanFactory beanFactory) {
124-
for (String bn : beanFactory.getBeanNamesForType(PersistentEntities.class)) {
125-
if (bn.startsWith("jdbc")) {
126-
return bn;
127-
}
128-
}
129-
}
130-
131-
return null;
132-
}
133-
13496
}

spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/config/R2dbcAuditingRegistrar.java

+1-40
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,15 @@
1717

1818
import java.lang.annotation.Annotation;
1919

20-
import org.springframework.beans.factory.ListableBeanFactory;
2120
import org.springframework.beans.factory.config.BeanDefinition;
2221
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
23-
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
2422
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
2523
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
2624
import org.springframework.data.auditing.ReactiveIsNewAwareAuditingHandler;
2725
import org.springframework.data.auditing.config.AuditingBeanDefinitionRegistrarSupport;
2826
import org.springframework.data.auditing.config.AuditingConfiguration;
2927
import org.springframework.data.config.ParsingUtils;
30-
import org.springframework.data.mapping.context.PersistentEntities;
3128
import org.springframework.data.r2dbc.mapping.event.ReactiveAuditingEntityCallback;
32-
import org.springframework.lang.Nullable;
3329
import org.springframework.util.Assert;
3430

3531
/**
@@ -62,7 +58,7 @@ protected String getAuditingHandlerBeanName() {
6258
@Override
6359
protected void postProcess(BeanDefinitionBuilder builder, AuditingConfiguration configuration,
6460
BeanDefinitionRegistry registry) {
65-
potentiallyRegisterR2dbcPersistentEntities(builder, registry);
61+
builder.setFactoryMethod("from").addConstructorArgReference("r2dbcMappingContext");
6662
}
6763

6864
/*
@@ -97,39 +93,4 @@ protected void registerAuditListenerBeanDefinition(BeanDefinition auditingHandle
9793
registerInfrastructureBeanWithId(listenerBeanDefinitionBuilder.getBeanDefinition(),
9894
ReactiveAuditingEntityCallback.class.getName(), registry);
9995
}
100-
101-
static void potentiallyRegisterR2dbcPersistentEntities(BeanDefinitionBuilder builder,
102-
BeanDefinitionRegistry registry) {
103-
104-
String persistentEntitiesBeanName = R2dbcAuditingRegistrar.detectPersistentEntitiesBeanName(registry);
105-
106-
if (persistentEntitiesBeanName == null) {
107-
108-
persistentEntitiesBeanName = BeanDefinitionReaderUtils.uniqueBeanName("r2dbcPersistentEntities", registry);
109-
110-
// TODO: https://github.com/spring-projects/spring-framework/issues/28728
111-
BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(PersistentEntities.class) //
112-
.setFactoryMethod("of") //
113-
.addConstructorArgReference("r2dbcMappingContext");
114-
115-
registry.registerBeanDefinition(persistentEntitiesBeanName, definition.getBeanDefinition());
116-
}
117-
118-
builder.addConstructorArgReference(persistentEntitiesBeanName);
119-
}
120-
121-
@Nullable
122-
private static String detectPersistentEntitiesBeanName(BeanDefinitionRegistry registry) {
123-
124-
if (registry instanceof ListableBeanFactory beanFactory) {
125-
for (String bn : beanFactory.getBeanNamesForType(PersistentEntities.class)) {
126-
if (bn.startsWith("r2dbc")) {
127-
return bn;
128-
}
129-
}
130-
}
131-
132-
return null;
133-
}
134-
13596
}

0 commit comments

Comments
 (0)