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 ;
29-
3020import org .springframework .beans .factory .config .BeanDefinition ;
3121import org .springframework .beans .factory .config .ConfigurableBeanFactory ;
3222import org .springframework .beans .factory .config .DependencyDescriptor ;
3323import org .springframework .beans .factory .parsing .BeanComponentDefinition ;
34- import org .springframework .beans .factory .support .AutowireCandidateResolver ;
35- import org .springframework .beans .factory .support .BeanDefinitionBuilder ;
36- import org .springframework .beans .factory .support .BeanDefinitionReaderUtils ;
37- import org .springframework .beans .factory .support .BeanDefinitionRegistry ;
38- import org .springframework .beans .factory .support .DefaultListableBeanFactory ;
39- import org .springframework .beans .factory .support .RootBeanDefinition ;
24+ import org .springframework .beans .factory .support .*;
4025import org .springframework .context .annotation .ContextAnnotationAutowireCandidateResolver ;
4126import org .springframework .context .support .GenericApplicationContext ;
4227import org .springframework .core .ResolvableType ;
5742import org .springframework .util .Assert ;
5843import org .springframework .util .StopWatch ;
5944
45+ import java .lang .reflect .TypeVariable ;
46+ import java .util .*;
47+ import java .util .stream .Collectors ;
48+
6049/**
6150 * Delegate for configuration integration to reuse the general way of detecting repositories. Customization is done by
6251 * providing a configuration format specific {@link RepositoryConfigurationSource} (currently either XML or annotations
@@ -92,7 +81,7 @@ public class RepositoryConfigurationDelegate {
9281 * @param environment must not be {@literal null}.
9382 */
9483 public RepositoryConfigurationDelegate (RepositoryConfigurationSource configurationSource ,
95- ResourceLoader resourceLoader , Environment environment ) {
84+ ResourceLoader resourceLoader , Environment environment ) {
9685
9786 this .isXml = configurationSource instanceof XmlRepositoryConfigurationSource ;
9887 boolean isAnnotation = configurationSource instanceof AnnotationRepositoryConfigurationSource ;
@@ -117,7 +106,7 @@ public RepositoryConfigurationDelegate(RepositoryConfigurationSource configurati
117106 * {@link Environment}.
118107 */
119108 private static Environment defaultEnvironment (@ Nullable Environment environment ,
120- @ Nullable ResourceLoader resourceLoader ) {
109+ @ Nullable ResourceLoader resourceLoader ) {
121110
122111 if (environment != null ) {
123112 return environment ;
@@ -136,7 +125,7 @@ private static Environment defaultEnvironment(@Nullable Environment environment,
136125 * @see org.springframework.beans.factory.support.BeanDefinitionRegistry
137126 */
138127 public List <BeanComponentDefinition > registerRepositoriesIn (BeanDefinitionRegistry registry ,
139- RepositoryConfigurationExtension extension ) {
128+ RepositoryConfigurationExtension extension ) {
140129
141130 if (logger .isInfoEnabled ()) {
142131 logger .info (LogMessage .format ("Bootstrapping Spring Data %s repositories in %s mode." , //
@@ -222,7 +211,7 @@ public List<BeanComponentDefinition> registerRepositoriesIn(BeanDefinitionRegist
222211 }
223212
224213 private void registerAotComponents (BeanDefinitionRegistry registry , RepositoryConfigurationExtension extension ,
225- Map <String , RepositoryConfigurationAdapter <?>> metadataByRepositoryBeanName ) {
214+ Map <String , RepositoryConfigurationAdapter <?>> metadataByRepositoryBeanName ) {
226215
227216 BeanDefinitionBuilder repositoryAotProcessor = BeanDefinitionBuilder
228217 .rootBeanDefinition (extension .getRepositoryAotProcessor ()).setRole (BeanDefinition .ROLE_INFRASTRUCTURE );
@@ -245,7 +234,7 @@ private void registerAotComponents(BeanDefinitionRegistry registry, RepositoryCo
245234 * @param registry must not be {@literal null}.
246235 */
247236 private static void potentiallyLazifyRepositories (Map <String , RepositoryConfiguration <?>> configurations ,
248- BeanDefinitionRegistry registry , BootstrapMode mode ) {
237+ BeanDefinitionRegistry registry , BootstrapMode mode ) {
249238
250239 if (!DefaultListableBeanFactory .class .isInstance (registry ) || BootstrapMode .DEFAULT .equals (mode )) {
251240 return ;
@@ -272,8 +261,10 @@ private static void potentiallyLazifyRepositories(Map<String, RepositoryConfigur
272261
273262 logger .debug ("Registering deferred repository initialization listener." );
274263
275- beanFactory .registerSingleton (DeferredRepositoryInitializationListener .class .getName (),
276- new DeferredRepositoryInitializationListener (beanFactory ));
264+ if (!beanFactory .containsBean (DeferredRepositoryInitializationListener .class .getName ())) {
265+ beanFactory .registerSingleton (DeferredRepositoryInitializationListener .class .getName (),
266+ new DeferredRepositoryInitializationListener (beanFactory ));
267+ }
277268 }
278269 }
279270
0 commit comments