2014-06-24 84 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導致應用驗證通知。