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)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게..
Goal 추상 팩토리에 대해 알아본다 객체 의존성에 대해 고찰 해보기 샘플 코드를 통한 추상 팩토리를 이해한다 추상 팩토리 패턴(Abstact Factory Pattern) 추상 팩토리 패턴은 상세화된 서브 클래스를 정의하지 않고도(= 구상 클래스에 의존하지 않고도) 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 이 인터페이스를 사용하면 코드와 제품을 생산하는 팩토리를 분리할 수 있다. 추상 팩토리 패턴은 팩토리 메서드 패턴을 좀 더 캡슐화한 방식이라고 볼 수가 있다. 왜 or 언제 추상 팩토리 패턴을 사용하는가? 객체가 생성되거나 구성, 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때 여러 제품군 중 하나를 선택해서 시스템을 설정해야 하고 한 번 구성..
Goal 팩토리 패턴에 대해 알아본다 팩토리 메소드에 대해 알아본다 샘플 코드를 통한 팩토리 메소드를 이해한다 팩토리 패턴(Factory Pattern) 객체 지향 디자인 패턴의 기본 원칙은 확장에 있어서는 열려 있어야 하며, 수정에 있어서는 닫혀 있어야 한다는 것이다. (OCP -개방폐쇄) 객체의 생성을 담당하는 클래스를 한 곳에서 관리하여 결합도를 줄이기 위하여 팩토리 패턴이 출현했다. 팩토리 메소드 패턴(Factory Method Pattern) 팩토리 메소드 패턴에서는 객체를 생성할 때 필요한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정함으로써 객체 생성을 캡슐화하는 패턴이다. 즉, 어떤 클래스의 인스턴스를 만들지를 결정해서가 아니라, 생산자 클래스가 실제 생산될 제..
Goal 간단한 팩토리에 대해 알아본다 샘플 코드를 통한 객체의 캡슐화를 간단한 팩토리로 변경해본다 다양한 팩토리 만들어보기 new 연산자에 대한 고찰 간단한 팩토리 (Simple Factory) 디자인 패턴이라기 보다는 프로그래밍에서 자주쓰이는 관용구에 가깝다. 왜 or 언제 간단한 팩토리 사용하는가? 객체 생성을 처리하는 부분을 Factory라고 부르며, 해당 부분을 캡슐화하여 분리할 수 있기 때문에 코드 가독성이나 관리 측면에서 용이하다 다이어그램 최첨단 피자 코드 만들기 as - is 피자 주문 코드 public Pizza orderPizza(String type) { Pizza pizza = new Pizza(); // 바뀌는 코드 if(type.equals("cheese")){ pizza = ..
Goal 전략 패턴에 대해 알아보고 이해한다 전략 패턴이 필요한 경우의 예시를 알아본다 문제를 파악하고, 디자인 원칙에 대해 알아본다 디자인 원칙에 입각한 전략패턴 이해하기 캡슐화된 행동 살펴보고 이해하기 클래스를 합치는 방법은 무엇인가? 전략 패턴 (Strategy Parttern) 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴 이다. 여기서 '전략'이란 일종의 알고리즘이 될 수 도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말한다. 왜 or 언제 전략 패턴을 사용하는가? 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴이기 때문..
Goal 데로레이터 패턴에 대해 알아보고 이해한다 샘플코드를 통한 데코레이터 패턴을 이해한다 데코레이터 패턴 (Decorator Parttern) 객체에 추가 요소를 동적으로 더할 수 있는 패턴. 다이어그램 데코레이터 패턴을 사용하는 이유 상속을 사용할 경우 클래스가 많아지거나 일부 서브클래스에는 적합한 기능을 추가해야하는 문제가 있지만, 데코레이터 패턴을 사용하면 보다 훨씬 유연하게 기능을 확장할 수 있기 때문이다. 주문 시스템에서 생각해보기 상황 : 상속을 써서 음료 가격과 첨과물(샷, 시럽, 우유, 휘핑크림 등) 가격을 합해서 총 가격을 산출하는 방법은 좋은 방법이 아님 요구 사항 : 다크로스트에 모카, 휘핑크림을 추가한 음료 해결 방안 : 데코레이터 패턴을 사용해서 가격을 계산해보자 1. Dark..
시작하기 전 ... 프록시 패턴은 목적에 따라 여러가지 패턴의 양상을 띈다. 이번 포스팅에서는 보호 프록시에 대해 알아보도록 하고, 전반적인 프록시 패턴의 개념은 아래 포스팅을 참고하면 된다. https://dev-rosiepoise.tistory.com/80 [Proxy Pattern] 프록시 패턴이란? Goal 프록시 패턴이란 무엇인지 알아보고 이해한다 프록시 패턴의 다이어그램 프록시 패턴 (Proxy Pattern) 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)를 제공한다. 실제 객 dev-rosiepoise.tistory.com Goal 보호 프록시에 대해 알아보고 이해한다 보호 프록시 샘플 코드를 통해 보호 프록시를 이해한다 프록시 패턴 (Proxy Pattern) 특정 객체..