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:
@@ -34,7 +34,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||||||
* @author Oliver Gierke
|
* @author Oliver Gierke
|
||||||
* @soundtrack Florian Reichelt & Max Ender - Abschlusskonzert (https://www.youtube.com/watch?v=5WP0P-ndinY)
|
* @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;
|
private final Iterable<RepositoryRestConfigurer> delegates;
|
||||||
|
|
||||||
|
|||||||
@@ -259,17 +259,16 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
|
|||||||
new DefaultRepositoryInvokerFactory(repositories.get(), defaultConversionService), getEntityLookups()));
|
new DefaultRepositoryInvokerFactory(repositories.get(), defaultConversionService), getEntityLookups()));
|
||||||
|
|
||||||
this.defaultConversionService = new DefaultFormattingConversionService();
|
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.repositoryRestConfiguration = Lazy.of(() -> context.getBean(RepositoryRestConfiguration.class));
|
||||||
this.pageableResolver = Lazy.of(() -> context.getBean(HateoasPageableHandlerMethodArgumentResolver.class));
|
this.pageableResolver = Lazy.of(() -> context.getBean(HateoasPageableHandlerMethodArgumentResolver.class));
|
||||||
this.sortResolver = Lazy.of(() -> context.getBean(HateoasSortHandlerMethodArgumentResolver.class));
|
this.sortResolver = Lazy.of(() -> context.getBean(HateoasSortHandlerMethodArgumentResolver.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
public static RepositoryRestConfigurerDelegate configurerDelegate(List<RepositoryRestConfigurer> configurers) {
|
|
||||||
return new RepositoryRestConfigurerDelegate(configurers);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
* @see org.springframework.beans.factory.BeanClassLoaderAware#setBeanClassLoader(java.lang.ClassLoader)
|
* @see org.springframework.beans.factory.BeanClassLoaderAware#setBeanClassLoader(java.lang.ClassLoader)
|
||||||
@@ -305,8 +304,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
|
|||||||
@Bean
|
@Bean
|
||||||
@Qualifier
|
@Qualifier
|
||||||
public DefaultFormattingConversionService defaultConversionService(PersistentEntities persistentEntities,
|
public DefaultFormattingConversionService defaultConversionService(PersistentEntities persistentEntities,
|
||||||
RepositoryInvokerFactory repositoryInvokerFactory, Repositories repositories,
|
RepositoryInvokerFactory repositoryInvokerFactory, Repositories repositories) {
|
||||||
RepositoryRestConfigurerDelegate configurerDelegate) {
|
|
||||||
|
|
||||||
DefaultFormattingConversionService conversionService = (DefaultFormattingConversionService) defaultConversionService;
|
DefaultFormattingConversionService conversionService = (DefaultFormattingConversionService) defaultConversionService;
|
||||||
|
|
||||||
@@ -316,7 +314,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
|
|||||||
conversionService.addConverter(StringToLdapNameConverter.INSTANCE);
|
conversionService.addConverter(StringToLdapNameConverter.INSTANCE);
|
||||||
addFormatters(conversionService);
|
addFormatters(conversionService);
|
||||||
|
|
||||||
configurerDelegate.configureConversionService(conversionService);
|
configurerDelegate.get().configureConversionService(conversionService);
|
||||||
|
|
||||||
return conversionService;
|
return conversionService;
|
||||||
}
|
}
|
||||||
@@ -326,11 +324,11 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
|
|||||||
* {@link org.springframework.validation.Validator} instances assigned to specific domain types.
|
* {@link org.springframework.validation.Validator} instances assigned to specific domain types.
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
public ValidatingRepositoryEventListener validatingRepositoryEventListener(ObjectFactory<PersistentEntities> entities,
|
public ValidatingRepositoryEventListener validatingRepositoryEventListener(
|
||||||
RepositoryRestConfigurerDelegate configurerDelegate) {
|
ObjectFactory<PersistentEntities> entities) {
|
||||||
|
|
||||||
ValidatingRepositoryEventListener listener = new ValidatingRepositoryEventListener(entities);
|
ValidatingRepositoryEventListener listener = new ValidatingRepositoryEventListener(entities);
|
||||||
configurerDelegate.configureValidatingRepositoryEventListener(listener);
|
configurerDelegate.get().configureValidatingRepositoryEventListener(listener);
|
||||||
|
|
||||||
return listener;
|
return listener;
|
||||||
}
|
}
|
||||||
@@ -775,7 +773,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
|
|||||||
@Qualifier("halJacksonHttpMessageConverter") TypeConstrainedMappingJackson2HttpMessageConverter halJacksonHttpMessageConverter,
|
@Qualifier("halJacksonHttpMessageConverter") TypeConstrainedMappingJackson2HttpMessageConverter halJacksonHttpMessageConverter,
|
||||||
@Qualifier("halFormsJacksonHttpMessageConverter") TypeConstrainedMappingJackson2HttpMessageConverter halFormsJacksonHttpMessageConverter,
|
@Qualifier("halFormsJacksonHttpMessageConverter") TypeConstrainedMappingJackson2HttpMessageConverter halFormsJacksonHttpMessageConverter,
|
||||||
AlpsJsonHttpMessageConverter alpsJsonHttpMessageConverter,
|
AlpsJsonHttpMessageConverter alpsJsonHttpMessageConverter,
|
||||||
UriListHttpMessageConverter uriListHttpMessageConverter, RepositoryRestConfigurerDelegate configurerDelegate,
|
UriListHttpMessageConverter uriListHttpMessageConverter,
|
||||||
RepositoryRestConfiguration repositoryRestConfiguration) {
|
RepositoryRestConfiguration repositoryRestConfiguration) {
|
||||||
|
|
||||||
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
|
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
|
||||||
@@ -800,7 +798,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
|
|||||||
messageConverters.add(fallbackJsonConverter);
|
messageConverters.add(fallbackJsonConverter);
|
||||||
messageConverters.add(uriListHttpMessageConverter);
|
messageConverters.add(uriListHttpMessageConverter);
|
||||||
|
|
||||||
configurerDelegate.configureHttpMessageConverters(messageConverters);
|
configurerDelegate.get().configureHttpMessageConverters(messageConverters);
|
||||||
|
|
||||||
return messageConverters;
|
return messageConverters;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user