Browse Source

Allow usage of BeanNameGenerator in ImportBeanDefinitionRegistrars

Closes gh-22591
pull/22597/head
Juergen Hoeller 7 years ago
parent
commit
0b53dbf38f
  1. 2
      spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java
  2. 26
      spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java

2
spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java

@ -382,7 +382,7 @@ class ConfigurationClassBeanDefinitionReader { @@ -382,7 +382,7 @@ class ConfigurationClassBeanDefinitionReader {
private void loadBeanDefinitionsFromRegistrars(Map<ImportBeanDefinitionRegistrar, AnnotationMetadata> registrars) {
registrars.forEach((registrar, metadata) ->
registrar.registerBeanDefinitions(metadata, this.registry));
registrar.registerBeanDefinitions(metadata, this.registry, this.importBeanNameGenerator));
}

26
spring-context/src/main/java/org/springframework/context/annotation/ImportBeanDefinitionRegistrar.java

@ -18,6 +18,7 @@ package org.springframework.context.annotation; @@ -18,6 +18,7 @@ package org.springframework.context.annotation;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.core.type.AnnotationMetadata;
/**
@ -42,6 +43,7 @@ import org.springframework.core.type.AnnotationMetadata; @@ -42,6 +43,7 @@ import org.springframework.core.type.AnnotationMetadata;
* <p>See implementations and associated unit tests for usage examples.
*
* @author Chris Beams
* @author Juergen Hoeller
* @since 3.1
* @see Import
* @see ImportSelector
@ -55,9 +57,31 @@ public interface ImportBeanDefinitionRegistrar { @@ -55,9 +57,31 @@ public interface ImportBeanDefinitionRegistrar {
* <p>Note that {@link BeanDefinitionRegistryPostProcessor} types may <em>not</em> be
* registered here, due to lifecycle constraints related to {@code @Configuration}
* class processing.
* <p>The default implementation delegates to
* {@link #registerBeanDefinitions(AnnotationMetadata, BeanDefinitionRegistry)}.
* @param importingClassMetadata annotation metadata of the importing class
* @param registry current bean definition registry
* @param importBeanNameGenerator the configuration-level bean name generator
* strategy for imported beans
* @since 5.2
*/
void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry);
default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry,
BeanNameGenerator importBeanNameGenerator) {
registerBeanDefinitions(importingClassMetadata, registry);
}
/**
* Register bean definitions as necessary based on the given annotation metadata of
* the importing {@code @Configuration} class.
* <p>Note that {@link BeanDefinitionRegistryPostProcessor} types may <em>not</em> be
* registered here, due to lifecycle constraints related to {@code @Configuration}
* class processing.
* <p>The default implementation is empty.
* @param importingClassMetadata annotation metadata of the importing class
* @param registry current bean definition registry
*/
default void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
}
}

Loading…
Cancel
Save