Add factory method to Reactive-/AuditingHandler.

By providing a factory method that accepts the MappingContext we can avoid the creation of additional support beans during the configuration phase for store modules implementing auditing.

See: #2593
This commit is contained in:
Christoph Strobl
2022-07-11 12:10:31 +02:00
parent fb07ad9b2e
commit 0905c77e5f
2 changed files with 22 additions and 1 deletions

View File

@@ -19,9 +19,9 @@ import java.util.Optional;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.mapping.context.PersistentEntities;
import org.springframework.util.Assert;
@@ -53,6 +53,16 @@ public class AuditingHandler extends AuditingHandlerSupport implements Initializ
this.auditorAware = Optional.empty();
}
/**
* Factory method that creates a new {@link AuditingHandler} for the given {@link MappingContext}.
*
* @param mappingContext must not be {@literal null}.
* @since 3.0
*/
public static AuditingHandler from(MappingContext<?, ?> mappingContext) {
return new AuditingHandler(PersistentEntities.of(mappingContext));
}
/**
* Setter to inject a {@code AuditorAware} component to retrieve the current auditor.
*

View File

@@ -18,6 +18,7 @@ package org.springframework.data.auditing;
import reactor.core.publisher.Mono;
import org.springframework.data.domain.ReactiveAuditorAware;
import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.mapping.context.PersistentEntities;
import org.springframework.util.Assert;
@@ -42,6 +43,16 @@ public class ReactiveAuditingHandler extends AuditingHandlerSupport {
super(entities);
}
/**
* Factory method that creates a new {@link ReactiveAuditingHandler} for the given {@link MappingContext}.
*
* @param mappingContext must not be {@literal null}.
* @since 3.0
*/
public static ReactiveAuditingHandler from(MappingContext<?, ?> mappingContext) {
return new ReactiveAuditingHandler(PersistentEntities.of(mappingContext));
}
/**
* Setter to inject a {@link ReactiveAuditorAware} component to retrieve the current auditor.
*