SlideShare a Scribd company logo
Spring 3의JSR 303(Bean Validation) 지원- 귀찮은 확인, 쉽고 편하게 하자!-2010. 9. 11KSUG 안세원kingori@gmail.com
목차JSR 303 (Bean Validation) 소개JSR 303 개요JSR 303 주요 구성 요소Spring 3의 JSR 303 지원Spring 3의 JSR 303 활용Spring MVC의 JSR 303 활용2
확인(Validation)시스템 구성 단위가 목표한 대로 동작하기 위한 작업으로, 시스템의 모든 계층에 꼭 필요함!하지만… 상당히 귀찮으며중복이 많음개발 편의와 일관성을 위해 다양한 Validation 도구들이 개발됨if( input.getName() == null || input.getAddress() == null ||  input.getEmail() == null ) {   throw new    Exception(“invalid input!”);}3
JSR 303 Bean Validation도메인 객체를 확인하기 위한 Java 표준 기술애노테이션으로 확인 규칙을 명시<도메인 객체를 이용한 확인 개념도>[1][1] Hibernate Validator Reference Guide4
살짝 둘러보기5<확인 Application- ValidateCar>확인 실패!!doors:must be greater than or equal to 2name:may not be null<도메인 객체 – Car><Console 결과>
JSR 303의 4대 구성요소6
Constraint Annotation클래스에 적용할 수 있음
예) 여러 속성에 대한 확인 규칙
사용자가 직접 정의할 수 있음
속성을 가질 수 있음
필드에 적용할 수있음
메시지를 별도로 정의할 수 있음
Bean 속성(Property) 에 적용할 수 있음 (getter 메서드)
주의) 필드와 속성에 중복 적용하지 말 것!7
Constraint Annotation 정의Target: Annotation 적용 대상 정의
Retention:RUNTIME 으로 고정
Constraint: validatedBy에 Constraint Validation 구현체 정의
message(): 필수 정의 속성. 표준 기본 값은 annotation의 fully qualified class name + “.message”
groups(): 필수 정의 속성
payload(): 필수 정의 속성@Past의 코드[1][1] JSR 303 Spec8
기본 제공 Constraint Annotation9
Constraint Validation 구현체확인 로직을 구현하는 클래스Constraint Annotation의 @Constraint( validatdateBy ) 에 명시함Constraint Annotation 별, 확인 대상 Class 별로 정의해야 함예) @Past 에 대한 Hibernate Validator의구현체는org.hibernate.validator.constraints.impl.PastValidatorForCalendar 와org.hibernate.validator.constraints.impl.PastValidatorForDate10
Constraint Validation 구현체 정의11인터페이스 javax.validation.ConstraintValidator를 구현함
Constraint Annotation, 확인 형을 명시
메서드initialize(): 확인 준비 로직을 수행함.
예) annotation 의 정보를 가져와 field에 저장
메서드isValid() :  대상 객체에 대한 확인 로직을 수행하고, 결과를 boolean형태로 반환함. ConstraintViolation을 변경할 땐 인자로 받은 ConstraintValidatorContext를 활용함Validator12
ConstraintViolation확인 위반 결과를 반환함13<ConstraintViolation 주요 메서드>
확인 규칙의 상속과 포함자식 클래스는 부모 클래스의 확인 규칙을 상속한다.@Valid 를통해 필드클래스의 확인 규칙을 포함한다.좌석수가 null 이 아니어야 함(Car로부터 상속)
승객수가 null 이 아니어야 함(Car로부터 상속)
운전자가 null 이 아니어야 함(직접 정의)
운전자.이름이 null 이 아니어야 함(@Valid 를 통해   Person의 확인 기준을 적용)14
확인 그룹(Validating Group)상황에 따라 확인 기준이 달라질 경우 어떻게 할까?매번 새로운 도메인 객체를 정의? 상속? 확인 그룹 사용15interface/class 모두 가능확인 실패!!승객수:may not be null
Custom ConstraintConstraint를 직접 만들어 쓸 수 있음기본 제공되는 Constraint를 조합별도의 Constraint Validation 구현체가필요 없으며, Constraint Annotation 과 메시지만 정의하면 됨새로운 검증 로직 구현 Constraint Annotation, Constraint Validation 구현체, 메시지를정의함16
Custom Constraint –조합17@NotNull, @Min, @Max 를 조합한 새로운 Constraint Annotation을 정의함
Constraint Validation 구현체는 필요 없으므로 validatedBy부분은 {}

More Related Content

PDF
Bean validation 1.1
PPTX
Spring test mvc 발표자료
PDF
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
PDF
자바 테스트 자동화
PDF
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
PDF
유지보수 가능한 개발 원칙
PDF
Spring boot 5장 cli
PPTX
Dependency Injection 소개
Bean validation 1.1
Spring test mvc 발표자료
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
자바 테스트 자동화
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
유지보수 가능한 개발 원칙
Spring boot 5장 cli
Dependency Injection 소개

What's hot (19)

PDF
02.실행환경 실습교재(데이터처리)
PDF
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PDF
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
PPTX
세미나 Spring mybatis
PPTX
JUnit 지원 라이브러리 소개
PPTX
Jdk(java) 7 - 5. invoke-dynamic
PDF
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
PDF
Spring Framework - Inversion of Control Container
PDF
sdet수행 사례
PPTX
E government framework
PDF
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
PDF
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
PDF
Spring 교육 자료
PPT
Unit Test With J Unit
PDF
소프트웨어 개선 그룹(Sig) 개발 원칙
PPTX
Introduce Katalon tool
PDF
Coded ui가이드
PDF
06.실행환경 실습교재(easy company,해답)
02.실행환경 실습교재(데이터처리)
#22.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
세미나 Spring mybatis
JUnit 지원 라이브러리 소개
Jdk(java) 7 - 5. invoke-dynamic
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
Spring Framework - Inversion of Control Container
sdet수행 사례
E government framework
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
Spring 교육 자료
Unit Test With J Unit
소프트웨어 개선 그룹(Sig) 개발 원칙
Introduce Katalon tool
Coded ui가이드
06.실행환경 실습교재(easy company,해답)
Ad

Similar to Spring 3의 jsr 303 지원 (20)

PDF
우리 제품의 검증 프로세스 소개 자료
PDF
자바 웹 개발 시작하기 (7주차 : 국제화, 확인검증, 예외처리)
PDF
Spring boot 공작소(1-4장)
PDF
AWS 신규 보안 서비스 - WAF. Inspector 등 (김용우) :: re:Invent re:Cap Webinar 2015
PPT
Cygnus unit test
PPT
Spring MVC
PPTX
Jenkins를 활용한 javascript 개발
PPTX
Spring mvc
PDF
Spring camp 발표자료
PDF
[Hello world 오픈세미나]open api client개발
PPTX
Springmvc
PPTX
The Cucumber for Java
PPTX
Angular js 의존관계 주입과 서비스
PDF
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
PDF
도메인구현 KSUG 20151128
PPTX
HOONS닷넷 오픈소스 프로젝트 Part1.
PDF
Online service 계층별 성능 모니터링 방안
PPT
Cappuccino fundamental
PDF
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
PPTX
ParameterizedTest 와 ContextCaching.pptx
우리 제품의 검증 프로세스 소개 자료
자바 웹 개발 시작하기 (7주차 : 국제화, 확인검증, 예외처리)
Spring boot 공작소(1-4장)
AWS 신규 보안 서비스 - WAF. Inspector 등 (김용우) :: re:Invent re:Cap Webinar 2015
Cygnus unit test
Spring MVC
Jenkins를 활용한 javascript 개발
Spring mvc
Spring camp 발표자료
[Hello world 오픈세미나]open api client개발
Springmvc
The Cucumber for Java
Angular js 의존관계 주입과 서비스
SQL PASS Korea Seminar Season 2 발표 - Azure SQL database의 Geo Replica와 Managed...
도메인구현 KSUG 20151128
HOONS닷넷 오픈소스 프로젝트 Part1.
Online service 계층별 성능 모니터링 방안
Cappuccino fundamental
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
ParameterizedTest 와 ContextCaching.pptx
Ad

More from Sewon Ann (9)

PDF
Flipper 불완전 정복
PDF
Android studio 디버거 조금 더 잘 쓰기
PDF
지금은 Constraint layout 시대
PDF
안드로이드 개발에 유용한 도구들
PDF
백엔드 서버 구축없이 모바일 앱앱 만들어보기
PDF
Framer js a/s talk
PDF
develop android app using intellij
PDF
ant로 안드로이드 앱을 자동으로 빌드하자
PDF
Google Hackathon Korea - hangout mafia
Flipper 불완전 정복
Android studio 디버거 조금 더 잘 쓰기
지금은 Constraint layout 시대
안드로이드 개발에 유용한 도구들
백엔드 서버 구축없이 모바일 앱앱 만들어보기
Framer js a/s talk
develop android app using intellij
ant로 안드로이드 앱을 자동으로 빌드하자
Google Hackathon Korea - hangout mafia

Spring 3의 jsr 303 지원