
Spring Container를 이용하기 위해선 Bean객체와 의존성을 관리하기 위한 구성정보가 필요합니다. 이러한 구성정보를 제공하기 위해 @Container를 이용해 구성정보 클래스를 정의하죠. 객체생성과 주입에 대한 역할을 분리 할 수 있으니 너무나 좋은 방법입니다. 하지만 관리해야 하는 객체가 많아진다면 이 또한 문제가 될 수 있습니다. Spring은 @ComponentScan 이라는 어노테이션을 제공합니다. ComponentScan은 구성정보 없이도 자동으로 빈들을 등록하고 관리하는 기능입니다. ComponentScan은 @Component 어노테이션이 붙어있는 객체들을 빈으로 등록합니다. @Service, @Repository, @Controller는 모두 이미 @Component 어노테이션이..
Spring의 핵심 혹은 꽃이라 불리우는 IoC Container에 대해 알아보겠습니다. 무언가의 정의에 대해 알기 위해선 공식 문서를 참고하는 것이 가장 좋겠지요. Spring에도 reference문서가 있습니다. https://docs.spring.io/spring-framework/docs/5.3.x/reference/html/core.html It(IoC or DI) is a process whereby objects define their dependencies (that is, the other objects they work with) only through constructor arguments, arguments to a factory method, or properties that ar..
Spring이 어떻게 SOLID한 프로그램을 만들도록 돕는지 살펴보기에 앞서 예제를 설정해 보겠습니다. @Controller public class 배고픈철수 { private MealService mealSerivce; @GetMapping("/eat") public 식사 meal() { ... } } 배가고픈 client(controller) 철수는 식사를 하기 위해 식사 제공 서비스를(MealService)를 이용합니다. MealService는 다양한 메뉴로 식사를 제공하는데, MealService는 여러 업체들의 아웃소싱을 통해 메뉴를 제공 받는 다고 합니다. 그리고 각 아웃소싱 업체들은 MenuSelection이라는 정책에 맞게 메뉴를 제공해야합니다. 이러한 요구사항들은 다음과 같이 구현해볼 수..
객체지향 프로그래밍의 5대 원칙이라 불리는 SOLID는 2000년대 초반 로버트 C. 마틴에 의해 정립되었습니다. 로버트 C. 마틴이 각각의 원칙을 세운 것은 아니지만 여러 가지 소프트웨어 설계 원칙들을 종합하고 정리한 것입니다.. 현재 SOLID 객체지향 적인 프로그래밍을 하는 거의 모든 개발자들에게 지켜야만 하는 최우선의 원칙들 중 하나가 되어 있는 것 같습니다. Spring이 어떻게 개발자로 하여금 SOLID 한 코드를 작성하도록 돕는지에 대해 이야기해보고자 하는데 먼저는 SOLID가 무엇인지부터 알아보겠습니다. SOLID는 서로 다른 5개의 원칙들의 알파벳 첫 글자를 따서 이름 붙여졌습니다. 이 다섯 가지 원칙은 다음과 같습니다. Single Responsibility Principle - 단일 ..