1515 */
1616package org .springframework .data .repository .config ;
1717
18- import java .lang .reflect .TypeVariable ;
19- import java .util .ArrayList ;
20- import java .util .Arrays ;
21- import java .util .Collection ;
22- import java .util .HashMap ;
23- import java .util .List ;
24- import java .util .Map ;
25- import java .util .stream .Collectors ;
26-
2718import org .apache .commons .logging .Log ;
2819import org .apache .commons .logging .LogFactory ;
2920import org .jspecify .annotations .Nullable ;
3223import org .springframework .beans .factory .config .ConfigurableBeanFactory ;
3324import org .springframework .beans .factory .config .DependencyDescriptor ;
3425import org .springframework .beans .factory .parsing .BeanComponentDefinition ;
35- import org .springframework .beans .factory .support .AutowireCandidateResolver ;
36- import org .springframework .beans .factory .support .BeanDefinitionBuilder ;
37- import org .springframework .beans .factory .support .BeanDefinitionReaderUtils ;
38- import org .springframework .beans .factory .support .BeanDefinitionRegistry ;
39- import org .springframework .beans .factory .support .DefaultListableBeanFactory ;
40- import org .springframework .beans .factory .support .RootBeanDefinition ;
26+ import org .springframework .beans .factory .support .*;
4127import org .springframework .context .annotation .ContextAnnotationAutowireCandidateResolver ;
4228import org .springframework .context .support .GenericApplicationContext ;
4329import org .springframework .core .ResolvableType ;
5743import org .springframework .util .Assert ;
5844import org .springframework .util .StopWatch ;
5945
46+ import java .lang .reflect .TypeVariable ;
47+ import java .util .*;
48+ import java .util .stream .Collectors ;
49+
6050/**
6151 * Delegate for configuration integration to reuse the general way of detecting repositories. Customization is done by
6252 * providing a configuration format specific {@link RepositoryConfigurationSource} (currently either XML or annotations
@@ -95,7 +85,7 @@ public class RepositoryConfigurationDelegate {
9585 * @param environment must not be {@literal null}.
9686 */
9787 public RepositoryConfigurationDelegate (RepositoryConfigurationSource configurationSource ,
98- ResourceLoader resourceLoader , Environment environment ) {
88+ ResourceLoader resourceLoader , Environment environment ) {
9989
10090 this .isXml = configurationSource instanceof XmlRepositoryConfigurationSource ;
10191 boolean isAnnotation = configurationSource instanceof AnnotationRepositoryConfigurationSource ;
@@ -120,7 +110,7 @@ public RepositoryConfigurationDelegate(RepositoryConfigurationSource configurati
120110 * {@link Environment}.
121111 */
122112 private static Environment defaultEnvironment (@ Nullable Environment environment ,
123- @ Nullable ResourceLoader resourceLoader ) {
113+ @ Nullable ResourceLoader resourceLoader ) {
124114
125115 if (environment != null ) {
126116 return environment ;
@@ -139,7 +129,7 @@ private static Environment defaultEnvironment(@Nullable Environment environment,
139129 * @see org.springframework.beans.factory.support.BeanDefinitionRegistry
140130 */
141131 public List <BeanComponentDefinition > registerRepositoriesIn (BeanDefinitionRegistry registry ,
142- RepositoryConfigurationExtension extension ) {
132+ RepositoryConfigurationExtension extension ) {
143133
144134 if (logger .isInfoEnabled ()) {
145135 logger .info (LogMessage .format ("Bootstrapping Spring Data %s repositories in %s mode." , //
@@ -225,7 +215,7 @@ public List<BeanComponentDefinition> registerRepositoriesIn(BeanDefinitionRegist
225215 }
226216
227217 private void registerAotComponents (BeanDefinitionRegistry registry , RepositoryConfigurationExtension extension ,
228- Map <String , RepositoryConfigurationAdapter <?>> metadataByRepositoryBeanName ) {
218+ Map <String , RepositoryConfigurationAdapter <?>> metadataByRepositoryBeanName ) {
229219
230220 BeanDefinitionBuilder repositoryAotProcessor = BeanDefinitionBuilder
231221 .rootBeanDefinition (extension .getRepositoryAotProcessor ()).setRole (BeanDefinition .ROLE_INFRASTRUCTURE );
@@ -248,7 +238,7 @@ private void registerAotComponents(BeanDefinitionRegistry registry, RepositoryCo
248238 * @param registry must not be {@literal null}.
249239 */
250240 private static void potentiallyLazifyRepositories (Map <String , RepositoryConfiguration <?>> configurations ,
251- BeanDefinitionRegistry registry , BootstrapMode mode ) {
241+ BeanDefinitionRegistry registry , BootstrapMode mode ) {
252242
253243 if (!(registry instanceof DefaultListableBeanFactory beanFactory ) || BootstrapMode .DEFAULT .equals (mode )) {
254244 return ;
@@ -272,8 +262,11 @@ private static void potentiallyLazifyRepositories(Map<String, RepositoryConfigur
272262 && !beanFactory .containsBean (DeferredRepositoryInitializationListener .class .getName ())) {
273263
274264 logger .debug ("Registering deferred repository initialization listener." );
275- beanFactory .registerSingleton (DeferredRepositoryInitializationListener .class .getName (),
276- new DeferredRepositoryInitializationListener (beanFactory ));
265+
266+ if (!beanFactory .containsBean (DeferredRepositoryInitializationListener .class .getName ())) {
267+ beanFactory .registerSingleton (DeferredRepositoryInitializationListener .class .getName (),
268+ new DeferredRepositoryInitializationListener (beanFactory ));
269+ }
277270 }
278271 }
279272
0 commit comments