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
20
import org .jspecify .annotations .Nullable ;
32
23
import org .springframework .beans .factory .config .ConfigurableBeanFactory ;
33
24
import org .springframework .beans .factory .config .DependencyDescriptor ;
34
25
import 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 .*;
41
27
import org .springframework .context .annotation .ContextAnnotationAutowireCandidateResolver ;
42
28
import org .springframework .context .support .GenericApplicationContext ;
43
29
import org .springframework .core .ResolvableType ;
57
43
import org .springframework .util .Assert ;
58
44
import org .springframework .util .StopWatch ;
59
45
46
+ import java .lang .reflect .TypeVariable ;
47
+ import java .util .*;
48
+ import java .util .stream .Collectors ;
49
+
60
50
/**
61
51
* Delegate for configuration integration to reuse the general way of detecting repositories. Customization is done by
62
52
* providing a configuration format specific {@link RepositoryConfigurationSource} (currently either XML or annotations
@@ -95,7 +85,7 @@ public class RepositoryConfigurationDelegate {
95
85
* @param environment must not be {@literal null}.
96
86
*/
97
87
public RepositoryConfigurationDelegate (RepositoryConfigurationSource configurationSource ,
98
- ResourceLoader resourceLoader , Environment environment ) {
88
+ ResourceLoader resourceLoader , Environment environment ) {
99
89
100
90
this .isXml = configurationSource instanceof XmlRepositoryConfigurationSource ;
101
91
boolean isAnnotation = configurationSource instanceof AnnotationRepositoryConfigurationSource ;
@@ -120,7 +110,7 @@ public RepositoryConfigurationDelegate(RepositoryConfigurationSource configurati
120
110
* {@link Environment}.
121
111
*/
122
112
private static Environment defaultEnvironment (@ Nullable Environment environment ,
123
- @ Nullable ResourceLoader resourceLoader ) {
113
+ @ Nullable ResourceLoader resourceLoader ) {
124
114
125
115
if (environment != null ) {
126
116
return environment ;
@@ -139,7 +129,7 @@ private static Environment defaultEnvironment(@Nullable Environment environment,
139
129
* @see org.springframework.beans.factory.support.BeanDefinitionRegistry
140
130
*/
141
131
public List <BeanComponentDefinition > registerRepositoriesIn (BeanDefinitionRegistry registry ,
142
- RepositoryConfigurationExtension extension ) {
132
+ RepositoryConfigurationExtension extension ) {
143
133
144
134
if (logger .isInfoEnabled ()) {
145
135
logger .info (LogMessage .format ("Bootstrapping Spring Data %s repositories in %s mode." , //
@@ -225,7 +215,7 @@ public List<BeanComponentDefinition> registerRepositoriesIn(BeanDefinitionRegist
225
215
}
226
216
227
217
private void registerAotComponents (BeanDefinitionRegistry registry , RepositoryConfigurationExtension extension ,
228
- Map <String , RepositoryConfigurationAdapter <?>> metadataByRepositoryBeanName ) {
218
+ Map <String , RepositoryConfigurationAdapter <?>> metadataByRepositoryBeanName ) {
229
219
230
220
BeanDefinitionBuilder repositoryAotProcessor = BeanDefinitionBuilder
231
221
.rootBeanDefinition (extension .getRepositoryAotProcessor ()).setRole (BeanDefinition .ROLE_INFRASTRUCTURE );
@@ -248,7 +238,7 @@ private void registerAotComponents(BeanDefinitionRegistry registry, RepositoryCo
248
238
* @param registry must not be {@literal null}.
249
239
*/
250
240
private static void potentiallyLazifyRepositories (Map <String , RepositoryConfiguration <?>> configurations ,
251
- BeanDefinitionRegistry registry , BootstrapMode mode ) {
241
+ BeanDefinitionRegistry registry , BootstrapMode mode ) {
252
242
253
243
if (!(registry instanceof DefaultListableBeanFactory beanFactory ) || BootstrapMode .DEFAULT .equals (mode )) {
254
244
return ;
@@ -272,8 +262,11 @@ private static void potentiallyLazifyRepositories(Map<String, RepositoryConfigur
272
262
&& !beanFactory .containsBean (DeferredRepositoryInitializationListener .class .getName ())) {
273
263
274
264
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
+ }
277
270
}
278
271
}
279
272
0 commit comments