0

我已经按照 Spring 4.0.5 文档中的说明在容器中配置 Bean 验证,使用 Hibernate Validator 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)
    }
}

我认为我需要在创建UploadTicketCreatorbean 之前注册后处理器,我将其分离到一个单独的配置类中,根据文档进行注释:

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

然后我将其UploadTicketCreator注入测试用例。我已验证自动装配运行正常(该字段已填充,并且它自己的tickets字段是 Mockito 模拟)。但是,验证逻辑没有应用于我的创建者 bean,注入的 bean 是没有任何代理的原始 POJO。

我错过了验证设置吗?是否有文档中未提及的其他必需步骤?

4

1 回答 1

1

Spring 配置处理器似乎正在检查 bean 声明的声明返回类型。我正在使用 Groovy 的隐式返回类型,它可能被编译为Object,并添加了显式返回类型,MethodValidationPostProcessor甚至BeanPostProcessor导致应用验证建议。

于 2014-06-24T12:15:58.433 回答