Getting started with JSR 303 (Bean Validation) – part 1
Using Bean Validation with Spring(Springで利用する場合)
標準の使い方はValidation APIより デフォルトバリデーションファクトリを生成します。
次にファクトリよりバリデーションを取得します。
ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator();
Springで使用する場合の設定はバリデーションファクトリの生成、バリデーションの生成をapplicationContext.xmlに登録します。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="validatorFactory" class="javax.validation.Validation" factory-method="buildDefaultValidatorFactory" /> <bean id="validator" factory-bean="validatorFactory" factory-method="getValidator" /> </beans>
取得したバリデーターのvalidateメソッドをコールします。
public class CarTest extends TestCase { private Validator validator; public void testlicensePlateTooShort() { Car car = new Car("Morris", "D"); Set<ConstraintViolation<Car>> constraintViolations = validator .validate(car); assertEquals(1, constraintViolations.size()); assertEquals("{name}fasdf;asfa", constraintViolations .iterator().next().getMessage()); } public void testcarIsValid() { Car car = new Car("DD-AB-123"); Set<ConstraintViolation<Car>> constraintViolations = validator .validate(car); assertEquals(1, constraintViolations.size()); } /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ @Override protected void setUp() throws Exception { super.setUp(); this.validator = Validation.getBuilder().build().getValidator(); } }