15
15
*/
16
16
package org .springframework .data .repository .config ;
17
17
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
-
27
18
import org .apache .commons .logging .Log ;
28
19
import org .apache .commons .logging .LogFactory ;
29
-
30
20
import org .springframework .beans .factory .config .BeanDefinition ;
31
21
import org .springframework .beans .factory .config .ConfigurableBeanFactory ;
32
22
import org .springframework .beans .factory .config .DependencyDescriptor ;
33
23
import 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 .*;
40
25
import org .springframework .context .annotation .ContextAnnotationAutowireCandidateResolver ;
41
26
import org .springframework .context .support .GenericApplicationContext ;
42
27
import org .springframework .core .ResolvableType ;
57
42
import org .springframework .util .Assert ;
58
43
import org .springframework .util .StopWatch ;
59
44
45
+ import java .lang .reflect .TypeVariable ;
46
+ import java .util .*;
47
+ import java .util .stream .Collectors ;
48
+
60
49
/**
61
50
* Delegate for configuration integration to reuse the general way of detecting repositories. Customization is done by
62
51
* providing a configuration format specific {@link RepositoryConfigurationSource} (currently either XML or annotations
@@ -92,7 +81,7 @@ public class RepositoryConfigurationDelegate {
92
81
* @param environment must not be {@literal null}.
93
82
*/
94
83
public RepositoryConfigurationDelegate (RepositoryConfigurationSource configurationSource ,
95
- ResourceLoader resourceLoader , Environment environment ) {
84
+ ResourceLoader resourceLoader , Environment environment ) {
96
85
97
86
this .isXml = configurationSource instanceof XmlRepositoryConfigurationSource ;
98
87
boolean isAnnotation = configurationSource instanceof AnnotationRepositoryConfigurationSource ;
@@ -117,7 +106,7 @@ public RepositoryConfigurationDelegate(RepositoryConfigurationSource configurati
117
106
* {@link Environment}.
118
107
*/
119
108
private static Environment defaultEnvironment (@ Nullable Environment environment ,
120
- @ Nullable ResourceLoader resourceLoader ) {
109
+ @ Nullable ResourceLoader resourceLoader ) {
121
110
122
111
if (environment != null ) {
123
112
return environment ;
@@ -136,7 +125,7 @@ private static Environment defaultEnvironment(@Nullable Environment environment,
136
125
* @see org.springframework.beans.factory.support.BeanDefinitionRegistry
137
126
*/
138
127
public List <BeanComponentDefinition > registerRepositoriesIn (BeanDefinitionRegistry registry ,
139
- RepositoryConfigurationExtension extension ) {
128
+ RepositoryConfigurationExtension extension ) {
140
129
141
130
if (logger .isInfoEnabled ()) {
142
131
logger .info (LogMessage .format ("Bootstrapping Spring Data %s repositories in %s mode." , //
@@ -222,7 +211,7 @@ public List<BeanComponentDefinition> registerRepositoriesIn(BeanDefinitionRegist
222
211
}
223
212
224
213
private void registerAotComponents (BeanDefinitionRegistry registry , RepositoryConfigurationExtension extension ,
225
- Map <String , RepositoryConfigurationAdapter <?>> metadataByRepositoryBeanName ) {
214
+ Map <String , RepositoryConfigurationAdapter <?>> metadataByRepositoryBeanName ) {
226
215
227
216
BeanDefinitionBuilder repositoryAotProcessor = BeanDefinitionBuilder
228
217
.rootBeanDefinition (extension .getRepositoryAotProcessor ()).setRole (BeanDefinition .ROLE_INFRASTRUCTURE );
@@ -245,7 +234,7 @@ private void registerAotComponents(BeanDefinitionRegistry registry, RepositoryCo
245
234
* @param registry must not be {@literal null}.
246
235
*/
247
236
private static void potentiallyLazifyRepositories (Map <String , RepositoryConfiguration <?>> configurations ,
248
- BeanDefinitionRegistry registry , BootstrapMode mode ) {
237
+ BeanDefinitionRegistry registry , BootstrapMode mode ) {
249
238
250
239
if (!DefaultListableBeanFactory .class .isInstance (registry ) || BootstrapMode .DEFAULT .equals (mode )) {
251
240
return ;
@@ -272,8 +261,10 @@ private static void potentiallyLazifyRepositories(Map<String, RepositoryConfigur
272
261
273
262
logger .debug ("Registering deferred repository initialization listener." );
274
263
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
+ }
277
268
}
278
269
}
279
270
0 commit comments