簡単な方法 (ジャージーでも可能) は、XML 経由で hibernate バリデーターを構成することです。validation.xml ファイルを META-INF フォルダーに配置し、参照されている xml ファイルに制約マッピングを作成します。
src/main/resources/META-INF/validation.xml (validation.xml はクラスパスの META-INF フォルダーにある必要があります):
<validation-config
xmlns="http://jboss.org/xml/ns/javax/validation/configuration" version="1.1">
<constraint-mapping>META-INF/mapping.xml</constraint-mapping>
</validation-config>
src/main/resources/META-INF/mapping.xml :
<constraint-mappings
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.1.xsd"
xmlns="http://jboss.org/xml/ns/javax/validation/mapping" version="1.1">
<default-package>com.example</default-package>
<bean class="MyBean" ignore-annotations="true">
<field name="name">
<constraint annotation="javax.validation.constraints.Size">
<element name="max">5</element>
</constraint>
<constraint annotation="javax.validation.constraints.NotNull">
</constraint>
</field>
</bean>
</constraint-mappings>
src/main/java/com/example/MyBean.java :
package com.example;
public class MyBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
src/main/java/com/example/MyResource.java :
package com.example;
import javax.validation.Valid;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Path("/api")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class MyResource {
@POST
public String postIt(@Valid MyBean bean) {
return bean.getName();
}
}