2014-06-24 56 views
0

我已经按照春4.0.5文档中的指令,用于在容器中配置Bean验证,与Hibernate验证5.1和这个(Groovy的)配置类:启用春季方法验证

@Configuration("validationConfig") 
@Import(CreatorConfig) 
@ImportResource("/META-INF/spring/mockito-mocks.xml") 
static class Config { 
    @Bean 
    validator() { 
     new LocalValidatorFactoryBean() 
    } 

    @Bean 
    mvpp() { 
     new MethodValidationPostProcessor() 
    } 
} 

我被测试类实例的引用CreatorConfig类:

@Configuration 
@DependsOn("validationConfig") 
static class CreatorConfig { 
    @Bean 
    ticketCreator(TicketRepository tickets) { 
     new UploadTicketCreator(tickets) 
    } 
} 

我,我需要创建之前注册的后处理器的信念下分离这个到一个单独的配置类0豆,其根据文档注释:

@Validated 
public class UploadTicketCreator { 
    public UploadTicket createTicket(@Valid CreateTicketRequest request) { 
     // do stuff 
    } 
} 

我然后注入到UploadTicketCreator测试用例。我已经验证了自动装配工作正常(该字段已填充,并且其自己的tickets字段是Mockito模拟)。然而,验证逻辑没有被应用到我的创建者bean中,注入的bean是没有任何代理的原始POJO。

我是否缺少一段验证设置?有没有在文档中提到的额外的必要步骤?

+0

日志是否包含有关'MethodValidationPostProcessor'发生了什么的任何信息? – geoand

回答

1

Spring配置处理器似乎在检查声明的声明返回类型。我正在使用Groovy的隐式返回类型,该类型大概编译为Object,并且添加明确的返回类型MethodValidationPostProcessor或甚至BeanPostProcessor导致应用验证通知。