Bean Validation

김학준·2024년 6월 17일
0

게시판

목록 보기
14/44

context-bean.xml

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
	<property name="defaultEncoding" value="UTF-8" />
		<property name="basename" value="classpath:errors" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
	<property name="defaultLocale" value="ko" />
</bean>

bean id="validator"

LocalValidatorFactoryBean 을 글로벌 Validator로 등록한다. 이 Validator는 @NotNull 같은 애노테이션을 보고 검증을 수행한다. 이렇게 글로벌 Validator가 적용되어 있기 때문에, @Valid , @Validated 만 적용하면 된다. 검증 오류가 발생하면 FieldError , ObjectError 를 생성해서 BindingResult 에 담아준다.

bean id="messageSource"

오류 메시지 파일의 위치를 인식할 수 있게 이 설정을 추가한다. classpath로 지정된 곳에 errors_ko.properties 파일이 존재해야 한다.

bean id="localeResolver"

세션을 통해 사용자의 로케일 정보를 관리합니다.

pom.xml

<dependency>
	<groupId>javax.validation</groupId>
	<artifactId>validation-api</artifactId>
	<version>2.0.1.Final</version>
</dependency>
<dependency>
	<groupId>org.hibernate.validator</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>6.2.5.Final</version>
</dependency>
<dependency>
	<groupId>org.glassfish</groupId>
	<artifactId>jakarta.el</artifactId>
	<version>3.0.3</version>
</dependency>
  • jakarta.validation-api: Bean Validation 인터페이스
  • hibernate-validator: 구현체
  • jakarta-el: EL 기능을 제공하는 라이브러리. Hibernate Validator가 EL을 통해 동적인 유효성 검사를 수행할 수 있게 됩니다.

errors.properties

NotBlank라는 오류 코드를 통해 MessageCodesResolver가 어떤 메시지 코드를 순서대로 만드는지 알아보자. 처음이 구체적이고 마지막이 덜 구체적이다.

1. NotBlank.item.itemName
2. NotBlank.itemName
3. NotBlank.java.lang.String
4. NotBlank

오류 코드는 구체적 ⭢ 덜 구체적인 것을 우선으로 만들어준다. 이때 크게 중요하지 않은 메시지 같은 경우에는 기본 메시지를 사용하도록 한다. 설정된 메시지 파일에서 첫번재로 찾은 오류 코드에 맵핑된 오류 메시지 아이디는 공백일 수 없습니다 를 출력한다.

0개의 댓글