-
Resource / Validation (스프링 핵심 기술 - 2)Programming/Spring Framework 주요 개념 2020. 3. 4. 18:38728x90
이전 포스트 정리
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'Programming > Spring Framework 주요 개념' 카테고리의 다른 글
Null-Safety (스프링 핵심 기술 - 6) (0) 2020.03.05 스프링 AOP (스프링 핵심 기술 - 5) (0) 2020.03.05 SpEL(Spring Expression Language) (스프링 핵심 기술 - 4) (0) 2020.03.05 데이터 바인딩 추상화 (스프링 핵심 기술 - 3) (0) 2020.03.04 스프링 IoC 컨테이너와 빈 (스프링 핵심 기술 - 1) (0) 2020.03.04