Programming/Spring Framework 주요 개념

Resource / Validation (스프링 핵심 기술 - 2)

흠냐아뤼 2020. 3. 4. 18:38
728x90

 

이전 포스트 정리

ApplicationContext는 BeanFactory 기능 뿐만 아니라 다양한 기능이 있음 (이벤트 퍼블리셔, 리소스 로더, 메시지...)

 

 

1. Resource 추상화

- java.net.URL을 추상화 한 것

- 스프링 내부에서 많이 사용하는 인터페이스

 

추상화 한 이유

- 클래스패스 기준으로 리소스를 읽어오는 기능 부재 (이 기능 많이 사용함)

- ServletContext를 기준으로 상대 경로로 읽어오는 기능 부재

- 위의 기능 부재로, 새로운 핸들러를 등록하여 특별한 URL 접미사를 만들어 사용할 수는 있지만 구현이 복잡하고 편의성 메소드가 부족함

 

구현체

- UrlResource : 기본적으로 지원하는 프토토콜 http, https, file, jar..

- ClassPathResource : 'classpath:' 접두어

- FileSystemResource

- ServletContextResource : 웹 애플리케이션 루트에서 상대 경로로 리소스를 찾음

 

Resource 타입은 location문자열과 ApplicationContext의 타입에 따라 결정됨

ApplicationContext의 타입에 상관없이 리소스 타입을 강제하려면 java.net.URL 접두어 중 하나를 사용할 수 있음

따라서, 아래와 같이 접두어를 사용하는 방법(명시적)을 추천

Resource resource = applicationContext.getResource("test.txt"); 		// X
Resource resource = applicationContext.getResource("classpath:test.txt"); 	// O

// 위의 경우 default로 ServletContextResource 타입의 객체가 return
// 아래의 경우에는 ClassPathResource

코드를 보고 해당 리소스가 파일경로로 오는지, 클래스 패스로 오는지 한 눈에 알 수 있음

 

 

 

2. Validation 추상화

- 애플리케이션에서 사용하는 객체 검증용 Validator 인터페이스

- DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다.

 

Validator 인터페이스

- boolean Supports(Class clazz) : 어떤 타입의 객체를 검증할 때 사용할 것인지 결정함

- void Vaildate(Object obj, Errors e) : 실제 검증 로직을 이 안에서 구현 (validationUtils를 사용하면 간편)

 

스프링 부트 2.0.5 이상 버전을 사용할 경우

- LocalValidatorFactoryBean 빈으로 자동 등록되어 간단한 검증 로직일 경우 Validator를 사용하지 않고 검증 가능

 

 

 

인프런 백기선님 강의 '스프링 프레임워크 핵심 기술' 강의를 듣고 정리한 내용입니다.
728x90