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();
	}


}