2012-05-10 3 views
0

Spring-3.1.0.GA를 사용하여 웹 응용 프로그램이 아닌 서비스를 개발 중입니다. 내 서비스 입력을 검증하기 위해 Spring과 함께 hibernate-validator를 사용하고 싶다.서비스 레이어에서 스프링을 사용하는 그룹과의 빈 확인

내가 가진 콩 검증 지원을 활성화 한 :

나는 등 @NotNull, @Size, @Valid와 @Validated 및 방법 매개 변수를 사용하여 내 서비스 인터페이스를 주석하고 그것을 잘 작동
<bean id="validator" 
     class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/> 

<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/> 

.

하지만 유효성 검사 그룹을 기반으로 고객에게 내 매개 변수의 유효성을 검사해야합니다. 메서드 매개 변수에 @Validated 또는 @Validated (Group1.class) 주석을 추가하면 Spring에서 유효성 검사를 수행하지 않습니다.

@Valid 주석을 달면 유효성 검증이 _ 생하지만 Default 유효성 검증 그룹 (예상대로)으로 _ 생합니다.

다양한 메소드가 다양한 그룹에서 작동하기 때문에 인터페이스 레벨에서 @Validate (Group1.class)에 주석을 달 수 없습니다.

그룹 지원과 함께 Spring 및 hibernate-validator를 사용하여 서비스 계층 유효성 검사를 수행하려면 어떻게해야합니까?

+0

주석을 사용하도록 설정해야합니까? 예 : ''을'applicationContext.xml'에 추가하는 것과 같은 무언가가 있습니다. (스프링 MVC 애플리케이션 일 것입니다. – vegemite4me

답변

0

Spring 3.1.0 이상에서는 @Valid 주석에 직접 그룹을 사용할 수 있습니다. 예 : 나는 스프링 소스 코드를 통해 갈 이유 방법 PARAMS에 대한 유효성 검사 그룹이 ... 코드 당은 인터페이스 수준에서만 @Validated에서 유효성 검사 그룹 구성을 따기로 포착되지 않는

@Valid(groups={Default.class, Group1.class}) 
+0

@Valid는 Bean 유효성 검사 API에서 가져온 것으로 그룹을 지원하지 않습니다. –

0

, 방법 수준에 있지 않습니다.

하지만 SpringMVC 컨텍스트에서 작동하는 방식을 아직 보지 못했지만 아직 확인하지 않았습니다.

또한이 프로세스에서 나는 자식 애플리케이션 컨텍스트에서 MethodValidationPostProcessor를 구성하면 Spring에 의해 선택되지 않는다는 것을 알게되었다. 내 말은 SpringMVC를 사용하는 경우 [Servlet-name] -servlet.xml에서 구성한 경우에만 MethodValidationPostProcessor가 등록된다는 의미입니다. ContextLoaderListener가 선택한 임의의 하위 컨텍스트 구성 파일에서 구성하는 경우 Spring은 MethodValidationPostProcessor를 등록하지 않습니다. 또한 MethodValidationPostProcessor 또는 모든 BeanPostProcessors에 대해서만 확실하지 않습니다.