스프링

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..
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 추상 팩토리에 대해 알아본다 객체 의존성에 대해 고찰 해보기 샘플 코드를 통한 추상 팩토리를 이해한다 추상 팩토리 패턴(Abstact Factory Pattern) 추상 팩토리 패턴은 상세화된 서브 클래스를 정의하지 않고도(= 구상 클래스에 의존하지 않고도) 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 이 인터페이스를 사용하면 코드와 제품을 생산하는 팩토리를 분리할 수 있다. 추상 팩토리 패턴은 팩토리 메서드 패턴을 좀 더 캡슐화한 방식이라고 볼 수가 있다. 왜 or 언제 추상 팩토리 패턴을 사용하는가? 객체가 생성되거나 구성, 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때 여러 제품군 중 하나를 선택해서 시스템을 설정해야 하고 한 번 구성..
Goal 팩토리 패턴에 대해 알아본다 팩토리 메소드에 대해 알아본다 샘플 코드를 통한 팩토리 메소드를 이해한다 팩토리 패턴(Factory Pattern) 객체 지향 디자인 패턴의 기본 원칙은 확장에 있어서는 열려 있어야 하며, 수정에 있어서는 닫혀 있어야 한다는 것이다. (OCP -개방폐쇄) 객체의 생성을 담당하는 클래스를 한 곳에서 관리하여 결합도를 줄이기 위하여 팩토리 패턴이 출현했다. 팩토리 메소드 패턴(Factory Method Pattern) 팩토리 메소드 패턴에서는 객체를 생성할 때 필요한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정함으로써 객체 생성을 캡슐화하는 패턴이다. 즉, 어떤 클래스의 인스턴스를 만들지를 결정해서가 아니라, 생산자 클래스가 실제 생산될 제..
dev_rosieposie
'스프링' 태그의 글 목록 (2 Page)