22
22
import java .util .List ;
23
23
import java .util .Map ;
24
24
import java .util .Optional ;
25
- import java .util .function .Consumer ;
26
25
import java .util .stream .Collectors ;
27
26
28
27
import org .aopalliance .intercept .MethodInterceptor ;
37
36
import org .springframework .beans .factory .BeanFactory ;
38
37
import org .springframework .beans .factory .BeanFactoryAware ;
39
38
import org .springframework .beans .factory .NoSuchBeanDefinitionException ;
40
- import org .springframework .context .ApplicationContext ;
41
39
import org .springframework .core .convert .support .DefaultConversionService ;
42
40
import org .springframework .core .convert .support .GenericConversionService ;
43
41
import org .springframework .core .log .LogMessage ;
@@ -280,12 +278,15 @@ public <T> T getRepository(Class<T> repositoryInterface, RepositoryFragments fra
280
278
ApplicationStartup applicationStartup = getStartup ();
281
279
282
280
StartupStep repositoryInit = applicationStartup .start ("spring.data.repository.init" );
281
+ repositoryInit .tag ("repository" , () -> repositoryInterface .getName ());
283
282
284
283
StartupStep repositoryMetadataStep = applicationStartup .start ("spring.data.repository.metadata" );
285
284
RepositoryMetadata metadata = getRepositoryMetadata (repositoryInterface );
286
285
repositoryMetadataStep .end ();
287
286
288
287
StartupStep repositoryCompositionStep = applicationStartup .start ("spring.data.repository.composition" );
288
+ repositoryCompositionStep .tag ("fragment.count" , () -> String .valueOf (fragments .size ()));
289
+
289
290
RepositoryComposition composition = getRepositoryComposition (metadata , fragments );
290
291
RepositoryInformation information = getRepositoryInformation (metadata , composition );
291
292
repositoryCompositionStep .end ();
@@ -309,45 +310,51 @@ public <T> T getRepository(Class<T> repositoryInterface, RepositoryFragments fra
309
310
result .addAdvisor (ExposeInvocationInterceptor .ADVISOR );
310
311
311
312
StartupStep repositoryPostprocessorsStep = applicationStartup .start ("spring.data.repository.postprocessors" );
312
- postProcessors .forEach (processor -> processor .postProcess (result , information ));
313
+ postProcessors .forEach (processor -> {
314
+
315
+ StartupStep singlePostProcessor = applicationStartup .start ("spring.data.repository.postprocessor" );
316
+ singlePostProcessor .tag ("type" , processor .getClass ().getName ());
317
+ processor .postProcess (result , information );
318
+ singlePostProcessor .end ();
319
+ });
313
320
repositoryPostprocessorsStep .end ();
314
321
315
322
if (DefaultMethodInvokingMethodInterceptor .hasDefaultMethods (repositoryInterface )) {
316
323
result .addAdvice (new DefaultMethodInvokingMethodInterceptor ());
317
324
}
318
325
326
+ StartupStep queryExecutorsStep = applicationStartup .start ("spring.data.repository.queryexecutors" );
319
327
ProjectionFactory projectionFactory = getProjectionFactory (classLoader , beanFactory );
320
328
Optional <QueryLookupStrategy > queryLookupStrategy = getQueryLookupStrategy (queryLookupStrategyKey ,
321
329
evaluationContextProvider );
322
330
result .addAdvice (new QueryExecutorMethodInterceptor (information , projectionFactory , queryLookupStrategy ,
323
331
namedQueries , queryPostProcessors , methodInvocationListeners ));
332
+ queryExecutorsStep .end ();
324
333
325
334
composition = composition .append (RepositoryFragment .implemented (target ));
326
335
result .addAdvice (new ImplementationMethodExecutionInterceptor (information , composition , methodInvocationListeners ));
327
336
328
337
T repository = (T ) result .getProxy (classLoader );
329
338
repositoryProxyStep .end ();
339
+ repositoryInit .end ();
330
340
331
341
if (logger .isDebugEnabled ()) {
332
342
logger .debug (LogMessage .format ("Finished creation of repository instance for {}." ,
333
343
repositoryInterface .getName ()));
334
344
}
335
345
336
- repositoryInit .end ();
337
346
return repository ;
338
347
}
339
348
340
349
ApplicationStartup getStartup () {
341
350
342
351
try {
343
352
344
- ApplicationStartup applicationStartup = beanFactory != null
345
- ? beanFactory .getBean (ApplicationStartup .class )
346
- : ApplicationStartup .DEFAULT ;
353
+ ApplicationStartup applicationStartup = beanFactory != null ? beanFactory .getBean (ApplicationStartup .class )
354
+ : ApplicationStartup .DEFAULT ;
347
355
348
356
return applicationStartup != null ? applicationStartup : ApplicationStartup .DEFAULT ;
349
- }
350
- catch (NoSuchBeanDefinitionException e ) {
357
+ } catch (NoSuchBeanDefinitionException e ) {
351
358
return ApplicationStartup .DEFAULT ;
352
359
}
353
360
}
0 commit comments