2016-10-03 3 views
0

Spring REST 서비스 (Spring 4.0 및 Java 8)를 구축했으며 Employee 클래스에 다음 속성이있는 Employees REST 서비스가 있습니다. 이름, 나이, 성별, 급여, 지정, 회사 _id , holiday_entitlement, manager_name & 나라.Spring 4.0의 동적 유효성 검사

는 나는 스프링 4.0를 사용하여 검증 층을 작성 찾고 있어요

는 검증

  1. 직원 이름, 나이, 성별 예상 직원

    하는 검증의 국가에 따라 동적 할 필요가 국가는 필수입니다.

  2. 직원의 성별은 남성 또는 여성

  3. 직원의 나이가 큰 70 년하지 덜 18 년 이상이 될 수 있어야한다. 국가가 스페인의 경우

  4. 나라가 영국의 경우 국가가 미국의 경우, 휴일 자격이 이상 이십오일 수 없습니다 예를 를 들어, 휴가 자격이 을보다 이십일 수 없습니다, 휴일 자격이 없습니다 30 일보다 길다.

  5. 마찬가지로 국가가 UK 인 경우, 다른 국가에서 유사한 방식으로 영국에 지정된 지정 목록에서만 지정을 수락 할 수 있습니다. MANAGER_NAME가 제공되는 경우

  6. 후 나는 그가 직원과 같은 회사 ID의 일부임을 확인해야합니다. 그래서 나는 매니저의 회사 ID를 얻기 위해 DAO를 찾아야 할 것입니다.

질문 위의 검증 요구 사항을 감안할 때

A., 나는 그런 국가에 따라 동적 검증을 허용합니다 봄 특정 클래스가 있는지 이해하고 싶습니다. 유효성 검증이 호출 될 때

B. 즉시 내 JSON은 스프링에 의해 또는 서비스 층 (클래스 주석 @Service) 내에서 자바 객체로 변환됩니다 게시 할 수 있습니다.

C. 나는 여전히 내 직원 POJO 봄 콩 검증 JSR 303 주석을 사용해야하거나 검증 esp는 필수 속성에 대해 다른 클래스에서 발생 하는가?

답변

1

A는 : 지금까지 나는 Hibernate가 참조 구현되는, javax.validation 사용 봄에 특별한 검증 층이없는 것을 알고있다. 실제로 구현하기 쉬운 방법은 메서드 유효성 검사입니다. 예를 들어 https://github.com/flexguse/validation-violation-checker-demo을 볼 수 있습니다.

B : Controller 메서드에서 @Valid 메서드 주석을 사용하여 JSR303 유효성 검사를 직접 수행 할 수 있지만 유효성 검사 오류의 경우 응답되는 내용을보다 잘 제어 할 수 있도록 서비스 메서드에서 유효성 검사를 수행하는 것이 좋습니다. https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

C를 참조하십시오 ->https://softwarecave.org/2014/03/27/custom-bean-validation-constraints/

를위한 JUnit 테스트를 작성하는 것을 잊지 마세요 볼 JSR 303 주석이 충분해야합니다, 당신은 당신이 직원 POJO에 추가해야하는 자신의 검증 주석 및 검증 구현을 작성해야 너의 검증!

0

필요에 따라 100 % 응답하는 특수 유효성 검사 레이어가 있다고 생각하지 않지만, 예를 들어 Spring MVC에서는 유효성 검사기 인터페이스 org.springFramework.validation.Validator이 있습니다.

validate 메소드를 사용하여 데이터의 유효성을 검사하는 규칙을 동적으로 정의하고 컨트롤러에서 바인더와 @Valid를 만들어 호출 할 수 있습니다.