전체 글

하면 하는거지 모! 또 다시 하면되지 모! 그냥 하는거지 모!
Goal 데이터 바인딩에 대해 알아본다 PropertyEditor에 대해 알아본다 데이터 바인딩이란? 기술적인 관점 : 프로퍼값을 타겟 객체에 설정하는 기능 사용자 관점 : 사용자 입력값을 어플리케이션 도메인 모델에 동적으로 변환하여 넣어주는 기능 org.springframework.validation.DataBinder 데이터 바인딩의 개념은 스프링 여러곳에서 쓰이는 핵심 기술 중 하나 즉, 입력값은 대부분 "문자열"인데 그 값을 객체가 가지고 다양한 타입(int, long, Boolean, Date 등 나아가 Event, Book)같은 도메인 타입으로도 변환하여 넣어주는 기능을 말한다. DataBinder (Spring Framework 6.0.11 API) Register the given cust..
Goal 스프링의 추상화 중 하나인 Validation 추상화에 대해 알아본다 validator를 구현해보며 이해한다 Validation 추상화란 ? 애플리케이션에서 사용하는 객체 검증용 인터페이스 이며, org.springframework.validation.Validator를 제공한다 특징 어떠한 계층과도 관계가 없다 모든 계층(웹,서비스,데이터)에서 사용해도 좋다 주로 스프링 mvc에서 사용하기는 하지만 웹 계층에서만 사용하는 웹 전용 validator가 아니다 구현체 중 하나로 JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation 1.1)을 지원한다 LocalValidatorFactoryBean bean validation이 제공하는 여러 애노테이션을 사..
Goal 스프링의 추상화 중 하나인 Resource 추상화에 대해 알아본다 추상화를 한 이유에 대해 알아본다 Resource 인터페이스의 동작과정과 구현체를 알아본다 Resource를 읽어오는 방법에 대해 알아본다 Resource 추상화란 ? 구체적으로 java.net.URL를 추상화 한 것 org.springframework.core.io.Resource 클래스로 감싸서 로우 레벨에 접근하는 기능을 추상화하였다. 가져오는 기능은 아래 포스팅 참고 https://dev-rosiepoise.tistory.com/99 [IoC 컨테이너와 빈] ResourceLoader Goal ApplicationContext의 Resource Loader에 대해 알아본다 ResourceLoader란? 리소스를 읽어오는 기..
Goal ApplicationContext의 Resource Loader에 대해 알아본다 ResourceLoader란? 리소스를 읽어오는 기능을 제공하는 인터페이스 public interface ApplicationContext extends ResourcePatternResolver public interface ResourcePatternResolver extends ResourceLoader getResource(location); ResourceLoader의 기능 파일 시스템에서 읽어오기 클래스패스에서 읽어오기 URL로 읽어오기 상대/절대 경로로 읽어오기 AppRunner @Component public class AppRunner implements ApplicationRunner { @Auto..
Goal ApplicationContext의 ApplicationEvent Publisher에 대해 알아본다 이벤트 만들어보고 이해해본다 이벤트 순서를 보장하는 방법에 대해 알아본다 스프링이 제공하는 기본 이벤트에 대해 알아본다 ApplicationEvent Publisher란? 이벤트 프로그래밍에 대한 인터페이스를 제공하며 옵저버 패턴의 구현체다 public interface ApplicationContext extends ApplicationEventPublisher publishEvent(ApplicationEvent event) 이벤트 만들기 스프링 4.2 이전 MyEvent public class MyEvent extends ApplicationEvent { private int data; pu..
Goal ApplicationContext의 MessageSource에 대해 알아본다 messages.properties에 대해 알아본다 릴로딩 기능이 있는 메세지 기능 사용을 해본다 MessageSource란? 국제화 (i18n) 기능을 제공하는 인터페이스 public interface ApplicationContext extends MessageSource @Nullable String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale); String getMessage(String code, @Nullable Object[] args, Locale locale) throws No..
Goal ApplicationContext의 Environment기능에 대해 알아본다 프로파일에 대해 알아본다 프로퍼티에 대해 알아본다 Environment란? 스프링 환경이자 설정과 관련된 인터페이스이다 public interface ApplicationContext extends EnvironmentCapable getEnvironment() Environment이 제공하는 두가지 기능 1. 프로파일 빈들의 그룹으로, Environment의 역할은 활성화할 프로파일 확인 및 설정한다. : 디폴트 프로파일은 어떤 프로파일과 상관없이 기본적으로 적용되는 프로파일 @Component public class AppRunner implements ApplicationRunner { @Autowired Appl..
Goal ApplicationContext의 빈의 스코프에 대해 알아본다 싱글톤 스코프와 프로토타입 스코프에 대해 알아본다 프로토 타입 빈이 싱글톤 타입 빈을 참조하는 경우에 대해 알아본다 빈의 스코프 대부분의 경우 싱글톤 스콥이며, 아무런 설정을 하지 않으면 기본 스코프가 싱글톤이다. 싱글톤 스코프 어플리케이션 전반에 걸쳐서 해당 빈의 인스턴스가 1개인 것 @Component public class Proto { } @Component public class Single { @Autowired Proto proto; public Proto getProto() { return proto; } } @Component public class AppRunner implements ApplicationRunne..
Goal @Component Scan에 대해 알아본다 @Component Scan의 주요 기능을 알아본다 @Component Scan의 동작 원리를 알아본다 @Component Scan란? @Component어노테이션(@Service, @Repository, @Controller)이 부여된 Class들을 자동으로 Scan하여 Bean으로 등록해준다. 이전 xml파일에 를 이용해 지정해주었던 것을 Java파일을 이용하여 bean을 scan하기 위해서 생겨났다. 가장 중요한 설정은 basePackags로 값은 문자열이며, type-safe하지 않음 basePackageClasses는 보다 type-safe함 - 해당 클래스 기준으로 컴포넌트 스캔 시작 보통 @Configuration부터 컴포넌트 스캔 시작 ..
Goal @Autowired에 대해 알아본다 해당 타입의 빈이 없거나 하나인 경우, @Autowired의 동작 해당 타입의 빈이 여러개인 경우, @Autowired의 동작 @Autowired의 동작원리를 알아본다 @Autowired 란? 필요한 의존 객체의 "타입"에 해당하는 빈을 찾아 주입하며, 기본 값은 (required=true) 못 찾으면 어플리케이션 구동이 실패한다. 해당 타입의 빈이 없거나 하나인 경우 @Autowired의 동작 1. 생성자 @Service public class BookService { BookRepository bookRepository; @Autowired public BookService(BookRepository bookRepository) { this.bookRepo..
dev_rosieposie
로지포지의 성장 연대기