[SPRING] Spring을 사용한 JSR-303 bean 검증은 시작되지 않습니다.
SPRINGSpring을 사용한 JSR-303 bean 검증은 시작되지 않습니다.
docs (http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/html/validation.html)에 제공된 내용에 따라 JSR-303 사용자 정의 유효성 검사기를 구성했습니다. classpath에 대한 LocalValidatorFactoryBean과 Hibernate validator. 그러나, 유효성 검사기는 그냥 걷어차기를 거부합니다. 여기에 간단한 단위 테스트 프로젝트 (https://github.com/abhijitsarkar/java/tree/master/spring-jsr-303)와 실패한 유닛 테스트. 당신이보기로 결정한다면, 그것을 복제하고 실행하십시오. 루트 디렉토리에서 테스트를 수행하십시오. Spring 프레임 워크 4.0.2.RELEASE와 Hibernate validator 5.0.3을 사용하고 있습니다. 최종.
유효성 검사중인 메서드 :
public Coffee serve(@ValidOrder(Coffee.Blend.class) final String blend) {
ValidOrder 주석 :
@Documented
@Constraint(validatedBy = {OrderValidator.class})
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,
ElementType.FIELD,
ElementType.ANNOTATION_TYPE,
ElementType.CONSTRUCTOR,
ElementType.PARAMETER})
@NotNull
public @interface ValidOrder {
OrderValidator 유효성 검사기 :
public class OrderValidator implements ConstraintValidator<ValidOrder, String> {
봄 설정 :
@Configuration
@ComponentScan(basePackages = "name.abhijitsarkar.coffeehouse")
@EnableAspectJAutoProxy
public abstract class AppConfig {
@Bean
public LocalValidatorFactoryBean validator() {
return new LocalValidatorFactoryBean();
}
}
종속성 :
dependencies {
compile(
[group: 'javax.inject', name: 'javax.inject', version: injectApiVersion],
[group: 'javax.validation', name: 'validation-api', version: beanValidationApiVersion],
[group: 'javax.annotation', name: 'javax.annotation-api', version: annotationApiVersion],
[group: 'org.springframework', name: 'spring-beans', version: springVersion],
[group: 'org.springframework', name: 'spring-context', version: springVersion],
[group: 'org.springframework', name: 'spring-aop', version: springVersion],
[group: 'org.aspectj', name: 'aspectjrt', version: aspectjVersion]
)
runtime(
[group: 'org.hibernate', name: 'hibernate-validator', version: hibernateValidatorVersion],
[group: 'javax.el', name: 'javax.el-api', version: elVersion],
[group: 'org.glassfish.web', name: 'javax.el', version: glassfishElVersion],
[group: 'org.aspectj', name: 'aspectjweaver', version: aspectjVersion]
)
해결법
-
==============================
1....
...
@Service @Validated public class SpringBarista extends Barista {
JSR-303과의 통합에 관해 언급하고있는 레퍼런스 매뉴얼 부분은 BV가 끼어 들지 않는이 2 가지 핵심 포인트를 편리하게 생략했다. 이것은 내가 의사가 말한 모든 것을 해낸 6 시간의 디버깅과 헤어 찢기를 야기했다. 나는 스프링 소스 코드를 통해 디버깅을해야만했다. 더 쉬운 방법이 있어야하고 나는이 문제를 가진 유일한 사람이 될 수 없습니다. 문서를 업데이트 할 수있는 JIRA SPR-11473을 만들었습니다.
-
==============================
2.블렌드 인수에서 봄부터 유효성 검사까지는 @Valid 주석이 필요합니다.
블렌드 인수에서 봄부터 유효성 검사까지는 @Valid 주석이 필요합니다.
JSR 303에서 매개 변수 제한 조건을 지원하지 않으므로 사용자의 접근 방식이 작동하지 않을 수 있습니다.
http://beanvalidation.org/1.0/spec/#constraintsdefinitionimplementation
from https://stackoverflow.com/questions/21963784/jsr-303-bean-validation-with-spring-does-not-kick-in by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring (REST)에서 REST 응답을 어떻게 장식 할 수 있습니까? (0) | 2019.02.15 |
---|---|
[SPRING] 오래된 Struts 애플리케이션을 Spring 3.x와 통합하는 방법 (0) | 2019.02.15 |
[SPRING] Mac 10.12.1의 STS.app는 항상 .eclipse에 새로운 org.springsource.sts 폴더를 만듭니다. (0) | 2019.02.15 |
[SPRING] WebApplicationContext가 autowire하지 않습니다. (0) | 2019.02.15 |
[SPRING] 구성 파일에서 플러시 모드를 "COMMIT"으로 설정하려면 어떻게합니까? (0) | 2019.02.15 |