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이 제공하는 여러 애노테이션을 사..
IOC
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 @Autowired에 대해 알아본다 해당 타입의 빈이 없거나 하나인 경우, @Autowired의 동작 해당 타입의 빈이 여러개인 경우, @Autowired의 동작 @Autowired의 동작원리를 알아본다 @Autowired 란? 필요한 의존 객체의 "타입"에 해당하는 빈을 찾아 주입하며, 기본 값은 (required=true) 못 찾으면 어플리케이션 구동이 실패한다. 해당 타입의 빈이 없거나 하나인 경우 @Autowired의 동작 1. 생성자 @Service public class BookService { BookRepository bookRepository; @Autowired public BookService(BookRepository bookRepository) { this.bookRepo..
Goal @SpringBootApplication 어노테이션에 대해 알아본다 ApplicationContext에 대해 알아본다 어노테이션을 사용하지 않고, 고전적인 방법(ApplicationContext)으로 스프링 빈 설정파일을 만들어본다 @SpringBootApplication 기존의 스프링부트 DemoApplication @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } @SpringBootApplication SpringBootConfiguration 스프링 부트의 설정을 나타내는..
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..
Goal 스프링 삼각형에 대해 알아본다 스프링이 구현한 Inversion of Control에 대해 알아본다 IoC를 사용한 경우와 그렇지 않은 경우 비교 IoC 컨테이너에 대해 알아보고 이해한다 Bean에 대해 알아보고 이해한다 스프링 삼각형 스프링을 이해하는 데는 POJO(Plain Old Java Obejct)를 기반으로 스프링 삼각형이라는 애칭을 가진 Ioc/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대한 이해가 필수다. 이번 포스팅에서는 3대 프로그래밍 중 하나인 IoC에 관해 살펴보자 IoC (Inversion of Control) : 제어의 역전 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게..