복붙노트

[SPRING] 어노테이션 된 메소드 인수를 사용하여 JSR 303 Bean 유효성 검증을 사용 가능하게하는 표준 방법이 있습니까?

SPRING

어노테이션 된 메소드 인수를 사용하여 JSR 303 Bean 유효성 검증을 사용 가능하게하는 표준 방법이 있습니까?

나는 지금 행운이없는 잠시 동안 주위를보고 있었다. Spring MVC를 사용하지 않지만 @ javax.validation.Valid를 사용하여 메소드 인수의 유효성을 검증 할 수 있습니다. 예제를 제공하려면

public class EventServiceImpl implements IEventService {
    @Override
    public void invite(@Valid Event event, @Valid User user) { ... }
}

MVC를 사용하면 간단한 (5.7.4.3 Spring MVC에서 사용할 JSR-303 Validator 구성하기 참조)로 @Controller 주석이있는 bean을 사용할 수 있습니다.

AOP를 사용하는 것은 아주 사소한 일입니다. 그럼에도 불구하고, 나는 이것을하기위한 표준 방법이 있다고 생각합니다. 따라서 질문 : 주석이없는 bean에 대한 입력 유효성 검증을 가능하게하는 비 MVC 응용 프로그램 및 비 제어기 bean에 대해 유사한 기능이 있습니까?

해결법

  1. ==============================

    1.메서드 수준 유효성 검사는 Bean 유효성 검사 사양 (JSR 303)의 일부가 아닙니다. 메소드 레벨 검증은 부록 C에 추가 된 스펙의 제안입니다.

    메서드 수준 유효성 검사는 Bean 유효성 검사 사양 (JSR 303)의 일부가 아닙니다. 메소드 레벨 검증은 부록 C에 추가 된 스펙의 제안입니다.

    Hibernate Validator 4.2 (이미 베타 버전이 출시 됨)가이 제안을 구현하고 메소드 매개 변수와 반환 값에 JSR 303 주석을 추가 할 수 있습니다. 물론 스프링 글루 코드가 필요 하겠지만 그렇게 어렵지는 않습니다.

    또한 Bean Validation 1.1은 공식적으로 메소드 레벨 검증을 스펙에 추가합니다 (부록 / 권장 사항이 아닌). http://beanvalidation.org/도 참조하십시오.

  2. ==============================

    2.@Valid는 유효성 검사를 수행하는 코드를 숨기고 모든 제약 조건 위반을 오류에 넣는 Controller Bean의 마커 일뿐입니다. 스프링 디자이너는 같은 일을하기 위해 자신의 주석을 고안했을 수 있습니다.

    @Valid는 유효성 검사를 수행하는 코드를 숨기고 모든 제약 조건 위반을 오류에 넣는 Controller Bean의 마커 일뿐입니다. 스프링 디자이너는 같은 일을하기 위해 자신의 주석을 고안했을 수 있습니다.

    @Valid 어노테이션의 실제 사용은 JSR 303 유효성 검사기로 유효성을 검사하는 클래스 (bean)에 있으며 그 기본 용도는 객체 그래프의 유효성을 검사하는 것입니다. 하나의 콩이 다른 것을 가질 수 있다는 것을 의미합니다. @Valid 주석을 사용하여 bean 참조를 재귀 적으로 트리거합니다.

    MVC 외부에서는 구성된 유효성 검사기를 사용하여 JSR 303 주석을 사용하는 모든 bean의 유효성을 검사 할 수 있지만 컨트롤러의 정교하게 채워진 오류와 달리 제약 조건 위반으로 무엇을 할 것인지 스스로 결정해야합니다.

    그래서, 당신의 질문에 답하기 위해 표준 방법이 없습니다. 컨트롤러에서와 같은 모양을 가지려면 @Valid 주석을 사용하여 (또는 새로 작성하여) AOP 조언을 실행하여 Bean의 유효성을 검사하고 'ViolationCollector'(MVC의 오류와 같은)를 채워야합니다. 방법.

  3. ==============================

    3.대답은 꽤 오래된 것 같습니다. 현재, Spring Bean의 메소드 인라인 유효성 검사를 위해 @Validated 및 MethodValidationPostProcessor를 활용할 수 있습니다. 이들은 기본적으로 컨트롤러가 아닌 모든 티어의 Spring 관리 Bean에 대해 pointcut-like 동작을 생성합니다. 내 다른 대답을 참조하십시오.

    대답은 꽤 오래된 것 같습니다. 현재, Spring Bean의 메소드 인라인 유효성 검사를 위해 @Validated 및 MethodValidationPostProcessor를 활용할 수 있습니다. 이들은 기본적으로 컨트롤러가 아닌 모든 티어의 Spring 관리 Bean에 대해 pointcut-like 동작을 생성합니다. 내 다른 대답을 참조하십시오.

  4. from https://stackoverflow.com/questions/4900077/is-there-a-standard-way-to-enable-jsr-303-bean-validation-using-annotated-method by cc-by-sa and MIT license