DATAJPA-638 - Improve bean definition registration for root configuration element.
We now make sure wo register shared bean definitions only once for all usages of a root configuration element (XML or annotation). Related ticket: DATACMNS-609.
This commit is contained in:
@@ -129,19 +129,15 @@ public class JpaRepositoryConfigExtension extends RepositoryConfigurationExtensi
|
||||
super.registerBeansForRoot(registry, config);
|
||||
|
||||
Object source = config.getSource();
|
||||
registerWithSourceAndGeneratedBeanName(registry, new RootBeanDefinition(
|
||||
EntityManagerBeanDefinitionRegistrarPostProcessor.class), source);
|
||||
|
||||
if (!registry.containsBeanDefinition(JPA_MAPPING_CONTEXT_BEAN_NAME)) {
|
||||
registry.registerBeanDefinition(JPA_MAPPING_CONTEXT_BEAN_NAME, //
|
||||
new RootBeanDefinition(JpaMetamodelMappingContextFactoryBean.class));
|
||||
}
|
||||
registerIfNotAlreadyRegistered(new RootBeanDefinition(EntityManagerBeanDefinitionRegistrarPostProcessor.class),
|
||||
registry, "foo", source);
|
||||
|
||||
if (!hasBean(PAB_POST_PROCESSOR, registry)
|
||||
&& !registry.containsBeanDefinition(AnnotationConfigUtils.PERSISTENCE_ANNOTATION_PROCESSOR_BEAN_NAME)) {
|
||||
registerIfNotAlreadyRegistered(new RootBeanDefinition(JpaMetamodelMappingContextFactoryBean.class), registry,
|
||||
JPA_MAPPING_CONTEXT_BEAN_NAME, source);
|
||||
|
||||
registerWithSourceAndGeneratedBeanName(registry, new RootBeanDefinition(PAB_POST_PROCESSOR), source);
|
||||
}
|
||||
registerIfNotAlreadyRegistered(new RootBeanDefinition(PAB_POST_PROCESSOR), registry,
|
||||
AnnotationConfigUtils.PERSISTENCE_ANNOTATION_PROCESSOR_BEAN_NAME, source);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -53,7 +53,6 @@ import org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcesso
|
||||
public class JpaRepositoryConfigExtensionUnitTests {
|
||||
|
||||
private static final String RIABPP_CLASS_NAME = "org.springframework.data.repository.core.support.RepositoryInterfaceAwareBeanPostProcessor";
|
||||
private static final String PABPP_CLASS_NAME = "org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor";
|
||||
|
||||
@Mock RepositoryConfigurationSource configSource;
|
||||
|
||||
@@ -69,8 +68,8 @@ public class JpaRepositoryConfigExtensionUnitTests {
|
||||
|
||||
Iterable<String> names = Arrays.asList(factory.getBeanDefinitionNames());
|
||||
|
||||
assertThat(names, Matchers.<String> hasItem(Matchers.startsWith(PABPP_CLASS_NAME)));
|
||||
assertThat(names, Matchers.<String> hasItem(Matchers.startsWith(RIABPP_CLASS_NAME)));
|
||||
assertThat(names, Matchers.<String> hasItem(AnnotationConfigUtils.PERSISTENCE_ANNOTATION_PROCESSOR_BEAN_NAME));
|
||||
assertThat(names, Matchers.<String> hasItem(RIABPP_CLASS_NAME));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user