본문 바로가기

스프링

096.WEB_Validator_BindingResult_Errors_Locale

Supports : 검증기가 검증할 수 있는 오브젝트 타입인지 확인해주는 메소드. 이 메소드를 통과한 경우에만 validate()가 호출된다.

 

 

1.     Com.springsource.javax.activation : Spring java-mail

2.     Com.springsource.javax.inject-1.0.0 : 프로토타입 프로퍼티 에디터를 위한 jar. @Inject, Provider인터페이스<PropertyEditorSupport> 지원

3.     Com.springsource.javax.mail : Spring java-mail

4.     Com.springsource.javax.servlet.jsp.jstl : JstlView

5.     Com.springsource.javax.validation : 스프링 바인딩 밸리데이션

6.     Com.springsource.org.aopalliance : Spring ProxyFactoryBean

7.     Com.springsource.org.aspectj.tools : AspectJExpressionPointcut 포인트컷 표현식 지원

8.     Com.springsource.org.cator.core : 자동으로 자바 오브젝트를 XML로 변환 지원.

9.     Com.springsource.org.cator.xml : 자동으로 자바 오브젝트를 XML로 변환 지원

10.   Com.springsource.org.joda.time : Date포맷 로케일 지원.

11.   Com.springsource.junit : junit

12.   Commons-logging : Spring-context가 사용

13.   Jackson-annotation : MappingJackson2JsonView

14.   Jackson-core : MappingJackson2JsonView

15.   Jackson-databind : MappingJackson2JsonView

16.   Mail : java-mail

17.   Mockito : 목 프레임워크 중 Mockito

18.   Mysql-connector : Mysql JDBC

19.   Org.springframework.context.support : Spring java-mail

20.   Org.springframework.oxm : Object-XML Mapping. 마샬러 빈을 지정해 모델에서 변환에 사용할 오브젝트를 지정해주면, OXM마샬러를 통해 모델 오브젝트를 XML로 변환해서 뷰의 결과로 사용할 수 있음.

21.   Spring-aop : 스프링 기능 자체의 aop, Spring ProxyFactoryBean

22.   Spring-bean : 스프링 코어와 함께 의존성 주입 제공 (Core Container)

23.   Spring-context : 스프링 코어, BeanFactory를 확장한 어플리케이션 컨텍스트 구현, 리소스 로드 및 국제화 지원(Core Container)

24.   Spring-core : 다른 스프링 모듈이 사용하는 유틸리티(Core Container)

25.   Spring-expression : EL 확장 Bean속성(배열, 컬렉션 포함).(Core Container)

26.   Spring-jdbc : 스프링이 지원하는 jdbc.

27.   Spring-test.jar

-       @RunWith : Junit 프레임워크의 테스트 실행방법을 확장시 사용.

-       SpringJUnit4ClassRunner : 어플리케이션컨텍스트를 만들고 관리하는 확장 클래스

-       @ContextConfiguration(경로) : 자동으로 만들어줄 어플리케이션 컨텍스트 설정파일

28.   Spring-tx : DuplicateKeyException.class 파일 존재 및 스프링 트랜잭션

29.   Spring-web : ContextLoaderListener 내장 루트 컨텍스트(서비스,DAO)

30.   Spring-webmvc : SpringMVC를 위한 리졸버, 모델앤뷰 등 지원

 

 

 

26. Supports : 검증기가 검증할 수 있는 오브젝트 타입인지 확인해주는 메소드. 이 메소드를 통과한 경우에만 validate()가 호출된다.

27. isAssignableFrom : User의 서브클래스가 사용될 수 있으므로 Class의 메소드. 어떤 클래스/인터페이스를 구현했는지 확인

29. validate : 26라인에서 검증한 target 오브젝트는 결국 User타입 오브젝트일 것이다. 따라서 캐스팅 후 검증 작업을 진행해야 한다.

31~32. ValidationUtils : if문으로 체크하는건 번거롭다 이럴땐 이 메소드를 넣으면,33~34라인을 대체한다. 공백문자도 허용하지 않으려면 rejectIfEmptyOrWhitespace() 메소드 사용.

34. rejectValue() : 어떤 필드에 문제가 있는지 등록. 두번째 파라미터는 에러코드를 넣음 뒤에서 더 설명함.

44. validate : 이 메서드를 실행하는 대신 @Valid 애노테이션을 사용하는 법도 있다.

45~48. 위와같이 분기처리를 통해 오류가 발견된 경우와 없을 때의 작업을 분기해준다.

 

 

 

46. @Valid : 위 예제에서의 validate()를 실행하는 것과 같은 효과. 그러면 이 모델을 바인딩하는 WebBinder@InitBinder 메소드에서 등록된 Validator를 이용해 모델을 검증하고, 그 결과를 BindingResult에 넣어서 전달해준다. 따라서 메소드의 파라미터로 전달받은 BindingResult에는 이미 UserValidator로 검증한 결과가 담겨 있을 것이다.

 

 

 

JSR-303 빈 검증 기술의 특징은 모델 오브젝트의 필드에 달린 제약조건 애노테이션을 이용해 검증을 진행할 수 있다는 점이다.

55. @NotNull : 필드값이 null이 아님을 확인하는 제약조건(빈문자열은 검증안됨). 빈 문자열까지 확인하려면 @Size(min=1)을 사용해야 한다.

57. @Min : 최소값을 지정할 수 있는 제약조건