본문으로 바로가기

https://www.inflearn.com/course/spring-framework_core

 

스프링 프레임워크 핵심 기술 - 인프런 | 강의

이번 강좌는 스프링 부트를 사용하며 스프링 핵심 기술을 학습합니다 따라서 스프링 부트 기반의 프로젝트를 사용하고 있는 개발자 또는 학생에게 유용한 스프링 강좌입니다., 스프링 프레임워

www.inflearn.com

 

ㅁ Resource / Validation

ㅇ Resource 추상화

- Applicationcontext를 xml 이름으로 호출할때,  Resource의 getResource로 classpath 경로 호출하는것이다. (Resource로 변환됨)

- ServletContextResource를 구현체중 가장 많이 쓰게 됨, 기본값임

 > 웹 애플리케이션 루트에서 상대 경로로 리소스를 찾는다.

 > 스프링 부트에 내장된 톰캣은 context path가 지정되어있지않음

- Resource를 호출할때 접두어를 사용하는걸 추천한다. (좀 더 명시적임 , :classpath or file://)


ㅇ Validation 추상화

- validation이란?  java ee 표준 스펙

- email, size, not null 등 bean 데이터를 검증 가능

- support랑 valid를 구현해야함

- validationutils를 통해 객체의 필드값에 대한 에러코드 설정 가능

- javax.validation.constraints 를 통해 구현된 validator를 가져다 쓸수 있다.

  >  maven에서 다운로드 가 안됨 ( 스프링 boot 2.5.2 사용)

- @size는 collection 사이즈 검증

- @Min @Max는 Integer 값 검증

 

ㅁ 데이터 바인딩

ㅇ 데이터 바인딩 추상화 : PropertyEditor

 - 사용자의 입력값 ( 보통 문자열 ) 을 int, long, boolean, date 등으로 변환하여 객체에 입력함

 - DataBinder 인터페이스가 있음

- PropertyEditor를 싱글톤으로 등록하면 안됨

 > ThreadSafe 하지 않음

 > bean으로 절~~대 등록하지 말것

 > Thread Scope의 bean으로 만들어도 됨 ( 하나의 쓰레드 내에서만 유효한 Bean )

-  Property Editor의 경우 구현이 복잡하고 어려움,  Spring 3 부터 다른것 사용

 

 

ㅁ 데이터 바인딩 추상화: Converter와 Formatter

- PropertyEditor는 String과 Object 간의 관계만 변환함, 또 상태정보를 저장함

- Converter는 ConverterRegistry에 등록해서 사용 ( @Configuration 을 사용한 bean에서 설정)

  > registry.addFormater  , registry.addConverter

- Message 관련해서 locale 바탕으로 바꾸는게 formatter

- Thread Safe함, Bean으로 주입 가능

- DefaultFormattingConversionService는 Conversion Service와 Formatter Registry 역할을 함

- 스프링 부트에서는 DFConversionService를 상속한 WebConversionService를 빈으로 등록함

- Formatter와 Converter를 bean으로 등록하면 Service에서 자동으로 등록하여 사용함

- Formatter를 쓰는거를 추천함