ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Resource / Validation (스프링 핵심 기술 - 2)
    Programming/Spring Framework 주요 개념 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

    댓글

Designed by Tistory.