I Think So!

디자인 패턴 - 전략 패턴(Strategy Pattern)

전략 패턴(Strategy Pattern) 좋은 설계는 변하는 것과 변하지 않는 것을 분리하는 것이다. 변하지 않는 것은 context에, 변하는 부분은 Strategy라는 인터페이스로 선언하여 구현체를 생성하여 문제를 해결한다. 알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만들자. 전략을 사용하면 알고리즘을 사용하는 ...

디자인 패턴 - 템플릿 메소드 패턴(Template Method Pattern)

템플릿 메소드 패턴 좋은 설계는 변하는 것과 변하지 않는 것을 분리하는 것이다. 변하지 않는 것은 추상클래스의 메서드로 선언, 변하는 부분은 추상 메서드로 선언하여 자식 클래스가 오버라이딩 하도록 처리한다. 이렇듯이 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내용을 바꾸는...

스프링 부트 7 - 환경 설정(environment), 프로퍼티(property)

환경 추상화 스프링이 제공하는 environment abstraction(환경 추상화)이란 무엇인가? 애플리케이션이 동작하는 환경은 목적이나 사용자에 따라서 조금씩 다르다. 스프링은 동작 환경에 맞춰서 코드를 매번 수정하지 않더라도, 애플리케이션의 구성 설정을 바꿀 수 있는 매커니즘을 제공한다. 어떤 빈들을 사용할 것인지 프로파일(또는 프로필)이라...

스프링 부트 5 - 자동 구성 기반 애플리케이션

빈 오브젝트의 역할과 구분 애플리케이션 빈: 개발자가 어떤 빈을 사용하겠다고 명시적으로 구성 정보를 제공한 것을 말한다. 컨테이너 인프라스트럭처 빈: 스프링 컨테이너 자신이거나, 스프링 컨테이너가 계속 기능을 확장하면서 추가해온 것들을 빈으로 등록시켜서 사용하는 빈들. 개발자가 이런 빈들을 등록 해달라고 요청하지 않지만, 컨테이너가 스스로 ...

스프링 부트 4 - 메타 애노테이션과 합성 애노테이션

1. 메타 애노테이션(Meta-annotation) 메타 애노테이션이란 애노테이션 위에 붙은 애노테이션이라는 뜻이다. 보통 애노테이션은 클래스나 메소드 앞에 붙지만, 애노테이션 위에도 애노테이션을 또 붙일 수 있다. 이때 애노테이션 위에 붙어있는 애노테이션을 ‘메타 애노테이션’이라 한다. 2. 합성 애노테이션(Composed-annotation) ...