본문 바로가기

Spring Boot9

데이터 바인딩 추상화 데이터 바인딩이란 ? 기술적인 관점: 프로퍼티 값을 타겟 객체에 설정하는 기능 사용자 관점: 사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 -> 입력 값인 대부분 "문자열"로 가지고 있고, 그 값을 객체의 int, long, Boolean, Date, Event, Book 같은 도메인 타입으로 변환해서 넣어주는 기능 예) 책 구매시 "제목" : "데이터 바인딩", "개수" : "3" 처럼 문자열 입력시 객체는 제목은 String, 개수는 int로 할당 해주는 것입니다. ProPertyEditer 스프링 3.0 이전 까지 DataBinder가 변환 작업 사용하던 인터페이스 Thread Safe하지 않음 -> 상태 정보를 저장하고 있기 때문에 싱글톤 빈으로 등록해서 사용시 문제가 .. 2022. 7. 26.
Validation 추상화 애플리케이션에서 사용하는 객체 검증용 인터페이스 특징 어떤 계층과도 관계가 없다 -> 모든 계층(웹,서비스,데이터)에서 사용가능 DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. 인터페이스 boolean supports(Class clazz): 어떤 타입의 객체를 검증할 때 사용할 것인지 결정함 void validate(Object obj, Errors e): 실제 검증 로직을 이 안에서 구현 구현할 때 ValidationUtils 이용시 편리 스프링 부트 2.0.5이상 버전 사용시 LocalValidatorFactoryBean를 빈으로 자동 등록 간단한 검증은 hibernate-validator로 Entity Field에 @Min, @Email, @NotNull등 annotation을 .. 2022. 7. 25.
Resource 추상화 특징 java.net.URL을 추상화 한 갓 스프링 내부에서 많이 사용하는 인터페이스 추상화 한 이유 클래스 패스 기준 리소스 읽어오는 기능 부재 ServletContext를 기준으로 상대 경로로 읽어오는 기능 부재 새로운 핸들러를 등록하여 특별한 URL 접미사를 만들어 사용 가능 하지만 구현 복잡 및 편의성 부족 주요 메소드 상속 받은 인터페이스 getInputStream() exists() isOpen() getDescription() 구현체 UrlResource : 기본 지원 프로토콜 http,https,file.jar등 ClassPathResource : 지원 접두어 classpath FileSystemResource ServletContextResource : 웹 어플리케이션 루트에서 상대 경로.. 2022. 7. 25.
IoC 컨테이너와 빈 IoC 컨테이너와 빈이 뭘까? IoC(Inversion of Contol) : 의존관계 주입(Dependency Injection) 이라고도 함. 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용 하는게 아니라, 주입 받아 사용 하는 방법. ApplicationContext를 통해 BeanFactory관리 : 빈 설정 소스로부터 빈 정의를 읽고, 빈 구성 및 제공 애플리케이션 컴포넌트의 저장소 빈: 스프링 IoC 컨테이너가 관리하는 객체. Repository나 Service 어노테이션 이용시 Bean 등록 라이프사이클 인터페이스 사용가능 @PostConstruct를 이용하여 빈 등록시 동작하는 메소드 구현가능 @Service public class BookService { // 의존 객체를 직접 만들어.. 2022. 7. 19.