Avoid RepositoryRestConfigurerDelegate exposed as bean.

Improving the configuration situation for RRCD, whose bean declaration required access to all RepositoryRestConfigurer instances while implementing the interface itself, too.  We now rather hide the creation of that instance in a Lazy as it doesn't need any kind of lifecycle management.
This commit is contained in:
Oliver Drotbohm
2021-03-26 13:48:38 +01:00
parent 17538c65d7
commit 4b36f794dc
2 changed files with 13 additions and 15 deletions

View File

@@ -34,7 +34,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
* @author Oliver Gierke
* @soundtrack Florian Reichelt & Max Ender - Abschlusskonzert (https://www.youtube.com/watch?v=5WP0P-ndinY)
*/
public class RepositoryRestConfigurerDelegate implements RepositoryRestConfigurer {
class RepositoryRestConfigurerDelegate implements RepositoryRestConfigurer {
private final Iterable<RepositoryRestConfigurer> delegates;

View File

@@ -259,17 +259,16 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
new DefaultRepositoryInvokerFactory(repositories.get(), defaultConversionService), getEntityLookups()));
this.defaultConversionService = new DefaultFormattingConversionService();
this.configurerDelegate = Lazy.of(() -> context.getBean(RepositoryRestConfigurerDelegate.class));
this.configurerDelegate = Lazy.of(() -> {
return new RepositoryRestConfigurerDelegate(context.getBeansOfType(RepositoryRestConfigurer.class).values());
});
this.repositoryRestConfiguration = Lazy.of(() -> context.getBean(RepositoryRestConfiguration.class));
this.pageableResolver = Lazy.of(() -> context.getBean(HateoasPageableHandlerMethodArgumentResolver.class));
this.sortResolver = Lazy.of(() -> context.getBean(HateoasSortHandlerMethodArgumentResolver.class));
}
@Bean
public static RepositoryRestConfigurerDelegate configurerDelegate(List<RepositoryRestConfigurer> configurers) {
return new RepositoryRestConfigurerDelegate(configurers);
}
/*
* (non-Javadoc)
* @see org.springframework.beans.factory.BeanClassLoaderAware#setBeanClassLoader(java.lang.ClassLoader)
@@ -305,8 +304,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
@Bean
@Qualifier
public DefaultFormattingConversionService defaultConversionService(PersistentEntities persistentEntities,
RepositoryInvokerFactory repositoryInvokerFactory, Repositories repositories,
RepositoryRestConfigurerDelegate configurerDelegate) {
RepositoryInvokerFactory repositoryInvokerFactory, Repositories repositories) {
DefaultFormattingConversionService conversionService = (DefaultFormattingConversionService) defaultConversionService;
@@ -316,7 +314,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
conversionService.addConverter(StringToLdapNameConverter.INSTANCE);
addFormatters(conversionService);
configurerDelegate.configureConversionService(conversionService);
configurerDelegate.get().configureConversionService(conversionService);
return conversionService;
}
@@ -326,11 +324,11 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
* {@link org.springframework.validation.Validator} instances assigned to specific domain types.
*/
@Bean
public ValidatingRepositoryEventListener validatingRepositoryEventListener(ObjectFactory<PersistentEntities> entities,
RepositoryRestConfigurerDelegate configurerDelegate) {
public ValidatingRepositoryEventListener validatingRepositoryEventListener(
ObjectFactory<PersistentEntities> entities) {
ValidatingRepositoryEventListener listener = new ValidatingRepositoryEventListener(entities);
configurerDelegate.configureValidatingRepositoryEventListener(listener);
configurerDelegate.get().configureValidatingRepositoryEventListener(listener);
return listener;
}
@@ -775,7 +773,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
@Qualifier("halJacksonHttpMessageConverter") TypeConstrainedMappingJackson2HttpMessageConverter halJacksonHttpMessageConverter,
@Qualifier("halFormsJacksonHttpMessageConverter") TypeConstrainedMappingJackson2HttpMessageConverter halFormsJacksonHttpMessageConverter,
AlpsJsonHttpMessageConverter alpsJsonHttpMessageConverter,
UriListHttpMessageConverter uriListHttpMessageConverter, RepositoryRestConfigurerDelegate configurerDelegate,
UriListHttpMessageConverter uriListHttpMessageConverter,
RepositoryRestConfiguration repositoryRestConfiguration) {
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
@@ -800,7 +798,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
messageConverters.add(fallbackJsonConverter);
messageConverters.add(uriListHttpMessageConverter);
configurerDelegate.configureHttpMessageConverters(messageConverters);
configurerDelegate.get().configureHttpMessageConverters(messageConverters);
return messageConverters;
}