기본적으로 Bean 유효성 검사가 클래스 경로(예: Hibernate Validator)에 존재하는 경우 LocalValidatorFactoryBean
은 컨트롤러 메서드 인수에서 @Valid
및 @Validated
와 함께 사용하기 위한 전역 유효성 검사기로 등록됩니다.
Java 구성에서는 다음 예제와 같이 전역 Validator
인스턴스를 사용자 정의할 수 있습니다.
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public Validator getValidator() {
// ...
}
}
다음 예에서는 XML에서 동일한 구성을 달성하는 방법을 보여줍니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven validator="globalValidator"/>
</beans>
다음 예제와 같이 Validator
구현을 로컬로 등록할 수도 있습니다.
@Controller
public class MyController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addValidators(new FooValidator());
}
}
[Tip]
LocalValidatorFactoryBean
을 어딘가에 주입해야 하는 경우 MVC 구성에 선언된 항목과의 충돌을 피하기 위해 Bean을 생성하고@Primary
로 표시합니다.