Open up AuditingBeanDefinitionRegistrarSupport.registerAuditHandlerBeanDefinition(…) to allow additional bean registrations.

Original Pull Request: #2624
This commit is contained in:
Mark Paluch
2022-06-29 09:13:35 +02:00
committed by Christoph Strobl
parent 4e23153816
commit 0a423ac3f5
30 changed files with 710 additions and 548 deletions

View File

@@ -56,28 +56,41 @@ public abstract class AuditingBeanDefinitionRegistrarSupport implements ImportBe
Assert.notNull(annotationMetadata, "AnnotationMetadata must not be null");
Assert.notNull(registry, "BeanDefinitionRegistry must not be null");
AbstractBeanDefinition ahbd = registerAuditHandlerBeanDefinition(registry, getConfiguration(annotationMetadata));
AbstractBeanDefinition ahbd = registerAuditHandlerBeanDefinition(getConfiguration(annotationMetadata), registry);
registerAuditListenerBeanDefinition(ahbd, registry);
}
/**
* Registers an appropriate BeanDefinition for an {@link AuditingHandler}.
*
* @param registry must not be {@literal null}.
* @param configuration must not be {@literal null}.
* @param registry must not be {@literal null}.
* @return
*/
private AbstractBeanDefinition registerAuditHandlerBeanDefinition(BeanDefinitionRegistry registry,
AuditingConfiguration configuration) {
protected AbstractBeanDefinition registerAuditHandlerBeanDefinition(AuditingConfiguration configuration,
BeanDefinitionRegistry registry) {
Assert.notNull(registry, "BeanDefinitionRegistry must not be null");
Assert.notNull(configuration, "AuditingConfiguration must not be null");
AbstractBeanDefinition ahbd = getAuditHandlerBeanDefinitionBuilder(configuration).getBeanDefinition();
BeanDefinitionBuilder builder = getAuditHandlerBeanDefinitionBuilder(configuration);
postProcess(builder, configuration, registry);
AbstractBeanDefinition ahbd = builder.getBeanDefinition();
registry.registerBeanDefinition(getAuditingHandlerBeanName(), ahbd);
return ahbd;
}
/**
* Customization hook to post-process the AuditHandler BeanDefinition.
*
* @param builder must not be {@literal null}.
* @param registry must not be {@literal null}.
* @param configuration must not be {@literal null}.
* @since 3.0
*/
protected void postProcess(BeanDefinitionBuilder builder, AuditingConfiguration configuration,
BeanDefinitionRegistry registry) {}
/**
* Creates a {@link BeanDefinitionBuilder} to ease the definition of store specific {@link AuditingHandler}
* implementations.