package org.springframework.issues; import org.springframework.aop.support.AbstractPointcutAdvisor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; @Configuration @ComponentScan @EnableAspectJAutoProxy public class ReproConfig { /* * @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { * MethodValidationPostProcessor methodValidationPostProcessor = new * MethodValidationPostProcessor(); return methodValidationPostProcessor; } */ @Bean public OrderedMethodValidationPostProcessor orderedMethodValidationPostProcessor() { return new OrderedMethodValidationPostProcessor(); } public class OrderedMethodValidationPostProcessor extends MethodValidationPostProcessor { private int adviceOrder = LOWEST_PRECEDENCE; @Override public void afterPropertiesSet() { super.afterPropertiesSet(); AbstractPointcutAdvisor abstractPointcutAdvisor = (AbstractPointcutAdvisor) advisor; abstractPointcutAdvisor.setOrder(adviceOrder); } public void setAdviceOrder(int adviceOrder) { this.adviceOrder = adviceOrder; } } }