old posting/Spring Framework

    [Spring] 데이터바인딩과 PropertyEditor

    [Spring] 데이터바인딩과 PropertyEditor

    데이터 바인딩 기술적인 관점 프로퍼티 값을 타겟 객체에 설정하는 기능 사용자 관점 사용자 입력값을 어플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 입력값은 대부분 문자열인데, 그 값을 객체가 가지고 있는 int, long, Boolean, Date 등 심지어 Event, Book 같은 도메인 타입으로도 변환해서 넣어주는 기능 PropertyEditor org.spingframework.validation.DataBinder 스프링 3.0 이전까지 DataBinder가 변환 작업 시 사용하던 인터페이스 쓰레드-세이프 하지 않는다. 상태 정보를 저장하고 있다. 따라서 싱글톤 빈으로 등록해서 사용하면 문제가 될 수 있다. Object와 String간의 변환만 할 수 있어 사용 범위가 제한적이다.

    [Spring] Validation

    Validation 추상화 어플리케이션에서 사용하는 객체 검증용 인터페이스 특징 어떠한 계층과도 관계가 없다. 모든 계층(웹, 서비스, 데이터)에서 사용해도 좋다. 구현체 중 하나로, JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation 1.1)을 지원한다. (LocalValidatorFactoryBean) DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. 인터페이스 boolean supports(Class clazz) 어떤 타입의 객체를 검증할 때 사용할 것인지 결정한다. void validate(Object obj, Errors e) 실제 검증 로직을 이 안에서 구현 구현할 때 ValidationUtils 사용하면 편리하다. 스프링 부트 2...

    [Spring] ResourceLoader 와 Resource

    ResourceLoader 리소스를 읽어오는 기능을 제공하는 인터페이스 ApplicationContext extends ResourceLoader 리소스 읽어오기 파일 시스템에서 읽어오기 클래스패스에서 읽어오기 URL로 읽어오기 상대, 절대 경로로 읽어오기 Resource 추상화 java.net.URL을 추상화 한 것 스프링 내부에서 많이 사용하는 인터페이스 추상화를 한 이유 클래스패스 기준으로 리소스를 읽어오는 기능의 부재 ServletContext를 기준으로 상대 경로로 읽어오는 기능의 부재 새로운 핸들러를 등록하여 특별한 URL 접미사를 만들어 사용할 수는 있지만 구현이 복잡하고 편의성 메소드가 부족하다. 주요 메소드 getInputStream() exitst() isOpen() getDescrip..

    [Spring] AppliacationEventPublisher

    ApplicationEventPublisher 이벤트 프로그래밍에 필요한 인터페이스 제공 옵저버 패턴 구현체 ApplicationContext extends ApplicationEventPublisher publishEvent(ApplicationEvent event) 이벤트 만들기 ApplicationEvent 상승 스프링4.2 부터는 이 클래스를 상속받지 않아도 이벤트로 사용할 수 있다. 이벤트 발생 시키는 방법 ApplicationEventPublisher.publishEvenr(); 이벤트 처리하는 방법 ApplicationListener를 구현한 클래스를 만들어서 빈으로 등록하기 스프링4.2 부터는 @EventListener를 사용해서 빈의 메소드에 사용할 수 있다. 기본적으로는 synchron..