使用不同的映射配置JSR-303 hibernate验证器

时间:2012-06-15 22:20:30

标签: java bean-validation hibernate-validator

我正在考虑将JSR-303与hibernate验证器一起使用。我们希望能够为每个客户提供不同的验证,或者有一组基本约束,并允许它们被覆盖。

我不确定最好的方法是什么。

对约束使用注释是不合适的,因为它们在模型中基本上是硬编码的。我知道我可以使用XML来外化验证(创建指定约束映射文件的META-INF / validation.xml)。但我不确定如何轻松地为多个客户配置这个。

我想我希望能够设置一个简单的属性,以便在部署时使用一组完全不同的约束映射文件。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以为每个客户创建一个ValidatorFactory,您可以使用特定于客户的约束映射XML文件进行配置,如下所示:

ValidatorFactory validatorFactory = Validation
    .byDefaultProvider()
    .configure()
    .addMapping(...) //input stream with an XML constraint mapping
    .addMapping(...) //another input stream with an XML constraint mapping
    .buildValidatorFactory();

当您使用Hibernate Validator时,您还可以使用programmatic constraint declaration的API创建单独配置的验证工厂。