Skip to content

Commit 8ce6767

Browse files
Expose RepositoryFragments as top level bean.
We now expose RepositoryFragments as a top level bean to be referenced when creating the actual repository.
1 parent 3f90fbe commit 8ce6767

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/main/java/org/springframework/data/repository/config/RepositoryBeanDefinitionBuilder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,18 @@
1616
package org.springframework.data.repository.config;
1717

1818
import java.util.List;
19+
import java.util.Locale;
1920
import java.util.Optional;
2021
import java.util.stream.Collectors;
2122
import java.util.stream.Stream;
2223

2324
import org.apache.commons.logging.Log;
2425
import org.apache.commons.logging.LogFactory;
2526

27+
import org.springframework.beans.factory.config.RuntimeBeanReference;
2628
import org.springframework.beans.factory.support.AbstractBeanDefinition;
2729
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
30+
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
2831
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
2932
import org.springframework.core.env.Environment;
3033
import org.springframework.core.io.ResourceLoader;
@@ -128,8 +131,9 @@ public BeanDefinitionBuilder build(RepositoryConfiguration<?> configuration) {
128131

129132
fragmentsBuilder.addConstructorArgValue(fragmentBeanNames);
130133

131-
builder.addPropertyValue("repositoryFragments",
132-
ParsingUtils.getSourceBeanDefinition(fragmentsBuilder, configuration.getSource()));
134+
String fragmentsBeanName = BeanDefinitionReaderUtils.uniqueBeanName(extension.getModuleName().toLowerCase(Locale.ROOT) + ".repo-fragments", registry);
135+
registry.registerBeanDefinition(fragmentsBeanName, fragmentsBuilder.getBeanDefinition());
136+
builder.addPropertyValue("repositoryFragments", new RuntimeBeanReference(fragmentsBeanName));
133137

134138
return builder;
135139
}

src/test/java/org/springframework/data/repository/config/RepositoryBeanDefinitionRegistrarSupportUnitTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,16 @@ void registersBeanDefinitionForFoundBean() {
7878
assertNoBeanDefinitionRegisteredFor("profileRepository");
7979
}
8080

81+
82+
@Test // GH-2584
83+
void shouldExposeFragmentsAsBean() {
84+
85+
AnnotationMetadata metadata = new StandardAnnotationMetadata(SampleConfiguration.class, true);
86+
87+
registrar.registerBeanDefinitions(metadata, registry);
88+
verify(registry, atLeast(1)).registerBeanDefinition(eq("commons.repo-fragments#0"), any(BeanDefinition.class));
89+
}
90+
8191
@Test // DATACMNS-1754
8292
void registersBeanDefinitionForNestedRepositories() {
8393

0 commit comments

Comments
 (0)