[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를 사용하면 간단한
AOP를 사용하는 것은 아주 사소한 일입니다. 그럼에도 불구하고, 나는 이것을하기위한 표준 방법이 있다고 생각합니다. 따라서 질문 : 주석이없는 bean에 대한 입력 유효성 검증을 가능하게하는 비 MVC 응용 프로그램 및 비 제어기 bean에 대해 유사한 기능이 있습니까?
해결법
-
==============================
1.메서드 수준 유효성 검사는 Bean 유효성 검사 사양 (JSR 303)의 일부가 아닙니다. 메소드 레벨 검증은 부록 C에 추가 된 스펙의 제안입니다.
메서드 수준 유효성 검사는 Bean 유효성 검사 사양 (JSR 303)의 일부가 아닙니다. 메소드 레벨 검증은 부록 C에 추가 된 스펙의 제안입니다.
Hibernate Validator 4.2 (이미 베타 버전이 출시 됨)가이 제안을 구현하고 메소드 매개 변수와 반환 값에 JSR 303 주석을 추가 할 수 있습니다. 물론 스프링 글루 코드가 필요 하겠지만 그렇게 어렵지는 않습니다.
또한 Bean Validation 1.1은 공식적으로 메소드 레벨 검증을 스펙에 추가합니다 (부록 / 권장 사항이 아닌). http://beanvalidation.org/도 참조하십시오.
-
==============================
2.@Valid는 유효성 검사를 수행하는 코드를 숨기고 모든 제약 조건 위반을 오류에 넣는 Controller Bean의 마커 일뿐입니다. 스프링 디자이너는 같은 일을하기 위해 자신의 주석을 고안했을 수 있습니다.
@Valid는 유효성 검사를 수행하는 코드를 숨기고 모든 제약 조건 위반을 오류에 넣는 Controller Bean의 마커 일뿐입니다. 스프링 디자이너는 같은 일을하기 위해 자신의 주석을 고안했을 수 있습니다.
@Valid 어노테이션의 실제 사용은 JSR 303 유효성 검사기로 유효성을 검사하는 클래스 (bean)에 있으며 그 기본 용도는 객체 그래프의 유효성을 검사하는 것입니다. 하나의 콩이 다른 것을 가질 수 있다는 것을 의미합니다. @Valid 주석을 사용하여 bean 참조를 재귀 적으로 트리거합니다.
MVC 외부에서는 구성된 유효성 검사기를 사용하여 JSR 303 주석을 사용하는 모든 bean의 유효성을 검사 할 수 있지만 컨트롤러의 정교하게 채워진 오류와 달리 제약 조건 위반으로 무엇을 할 것인지 스스로 결정해야합니다.
그래서, 당신의 질문에 답하기 위해 표준 방법이 없습니다. 컨트롤러에서와 같은 모양을 가지려면 @Valid 주석을 사용하여 (또는 새로 작성하여) AOP 조언을 실행하여 Bean의 유효성을 검사하고 'ViolationCollector'(MVC의 오류와 같은)를 채워야합니다. 방법.
-
==============================
3.대답은 꽤 오래된 것 같습니다. 현재, Spring Bean의 메소드 인라인 유효성 검사를 위해 @Validated 및 MethodValidationPostProcessor를 활용할 수 있습니다. 이들은 기본적으로 컨트롤러가 아닌 모든 티어의 Spring 관리 Bean에 대해 pointcut-like 동작을 생성합니다. 내 다른 대답을 참조하십시오.
대답은 꽤 오래된 것 같습니다. 현재, Spring Bean의 메소드 인라인 유효성 검사를 위해 @Validated 및 MethodValidationPostProcessor를 활용할 수 있습니다. 이들은 기본적으로 컨트롤러가 아닌 모든 티어의 Spring 관리 Bean에 대해 pointcut-like 동작을 생성합니다. 내 다른 대답을 참조하십시오.
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
'SPRING' 카테고리의 다른 글
[SPRING] JAXB를 사용하여 XML에서 List를 반환하는 Spring 4 REST 프로그램 (0) | 2019.03.16 |
---|---|
[SPRING] Hibernate가 다른 데이터 소스를 읽거나 쓰도록 설정하는 방법은 무엇입니까? (0) | 2019.03.16 |
[SPRING] 풀 오류가 발생합니다. 유휴 상태의 객체를 기다리는 시간 초과입니다. (0) | 2019.03.16 |
[SPRING] Hibernate Validator를 사용하여 double과 float 값을 검증 - bean 검증 (0) | 2019.03.16 |
[SPRING] 주석을 사용하여 jackson의 비 직렬화 프로세스에서 ACCEPT_SINGLE_VALUE_AS_ARRAY를 적용하는 방법 (0) | 2019.03.16 |