1. 라이브러리 추가.

        <!-- Validation -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>com.springsource.org.hibernate.validator</artifactId>
            <version>4.0.0.GA</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>com.springsource.javax.xml.bind</artifactId>
            <version>2.1.7</version>
        </dependency>

2. 빈 설정.

    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="cacheSeconds" value="0" />
        <property name="webBindingInitializer">
            <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
                   <property name="validator" ref="validator" />
               </bean>
        </property>
    </bean>
   
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

3. 애노테이션 기반 검증 설정

    @Column(length = 100)
    @NotEmpty(message="제목을 입력하세요!")
    private String title;
    @Column(columnDefinition="TEXT")
    @NotEmpty(message="제목을 입력하세요!")
    private String contents;

4. 컨트롤러 코드 수정.

    @RequestMapping(value = "/notice/update/{id}", method = RequestMethod.POST)
    public String updateForm(@Valid Notice notice, BindingResult result, SessionStatus status) {
        if (result.hasErrors()) {
            return "notice/update";
        } else {
            noticeService.update(notice);
            status.setComplete();
            return "redirect:/notice/" + notice.getId() + ".do";
        }
    }

끝~!! 기본 에러 메시지는 애노테이션에서 변경할 수 있습니다.

이제 JSR 303 애노테이션과 그 확장 애노테이션에 뭣들이 있는지 살펴봐야겠네요.