/** * A {@link BeanPostProcessor} to modify {@link RequestMappingHandlerAdapter} beans in the application context to * get a {@link ProxyingHandlerMethodArgumentResolver} configured as first {@link HandlerMethodArgumentResolver}. * * @param conversionService the Spring MVC {@link ConversionService} in a lazy fashion, so that its initialization * is not triggered yet. */ public ProjectingArgumentResolverBeanPostProcessor( @Qualifier("mvcConversionService") ObjectFactory<ConversionService> conversionService) { this.resolver = new ProxyingHandlerMethodArgumentResolver(conversionService, false); }
@Override public void setBeanClassLoader(ClassLoader classLoader) { this.resolver.setBeanClassLoader(classLoader); }
@Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.resolver.setBeanFactory(beanFactory); }
@Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(sortResolver()); argumentResolvers.add(pageableResolver()); ProxyingHandlerMethodArgumentResolver resolver = new ProxyingHandlerMethodArgumentResolver(conversionService.getObject()); resolver.setBeanFactory(applicationContext); resolver.setBeanClassLoader(applicationContext.getClassLoader()); argumentResolvers.add(resolver); argumentResolvers.add(0, querydslPredicateArgumentResolver()); RangeMethodArgumentResolver<?> rangeArgumentResolver = new RangeMethodArgumentResolver<>(conversionService.getObject()); argumentResolvers.add(rangeArgumentResolver); }
@Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(sortResolver()); argumentResolvers.add(pageableResolver()); ProxyingHandlerMethodArgumentResolver resolver = new ProxyingHandlerMethodArgumentResolver(conversionService, true); resolver.setBeanFactory(context); forwardBeanClassLoader(resolver); argumentResolvers.add(resolver); }