객체지향의원리

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 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 스프링 삼각형에 대해 알아본다 스프링이 구현한 PSA에 대해 알아보자 샘플코드를 통해 PSA를 이해해본다 스프링 삼각형 스프링을 이해하는 데는 POJO(Plain Old Java Obejct)를 기반으로 스프링 삼각형이라는 애칭을 가진 Ioc/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대한 이해가 필수다. 이번 포스팅에서는 3대 프로그래밍 중 하나인 PSA에 관해 살펴보자 PSA (Portable Service Abstraction) 이식 가능한 서비스 추상화 => 잘 만든 인터페이스 PSA 적용 전 나의 코드 확장성이 좋지못한 코드 또는 기술에 특화되어 있는 코드 문제 확장성이 좋지못한 코드 => 테스트가 어렵다 기술에 특화되어 있는 코드 => 어떠한 기술을 바꿀 때마다 ..
Goal 스프링 삼각형에 대해 알아본다 스프링이 구현한 AOP에 대해 알아보자 샘플코드를 통해 AOP를 이해해본다 스프링 삼각형 스프링을 이해하는 데는 POJO(Plain Old Java Obejct)를 기반으로 스프링 삼각형이라는 애칭을 가진 Ioc/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대한 이해가 필수다. 이번 포스팅에서는 3대 프로그래밍 중 하나인 AOP에 관해 살펴보자 AOP (Aspect - Oriented Programming) 관점 지향 프로그래밍 흩어진 코드를 한 곳으로 모으고, 다른 기타 클래스들은 자신이 해야할 일만 하도록 돕는 코딩 기볍 = > SRP 단일 책임의 원칙 흩어진 AAAA 와 BBBB class A { method a () { AAAA 오늘은 7..
dev_rosieposie
'객체지향의원리' 태그의 글 목록