본문 바로가기

Spring/스프링 핵심 원리 - 기본편17

5-1. 싱글톤 컨테이너 + static method @Configuration은 왜 사용하는 것일까요? 안녕하세요. 오늘은 싱글톤 컨테이너에 대해서 알아보겠습니다. 싱글톤 컨테이너를 학습하고, @Configuration 사용 이유를 이해하는 것이 오늘의 목표입니다. 스프링 컨테이너는 싱글톤 컨테이너인데요. 먼저 싱글톤 패턴이 무엇인지 알아봅시다. 싱글톤 패턴 싱글톤 패턴은 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴입니다. 객체의 인스턴스가 2개 이상 생성되지 못하도록 막습니다. 싱글톤 패턴을 구현하는 방법에는 여러 가지가 있는데, 여기서는 객체를 미리 생성해두는 방법을 활용해 알아봅시다. 객체의 constructor를 public으로 만들면, 어디서든 객체를 만들 수 있겠죠. 그러나 객체를 한 개만 두고 싶으므로 누구나 만들지 못하.. 2022. 1. 6.
4. 스프링 컨테이너와 스프링 빈 + 람다식, Map 데이터 전체 조회 스프링 컨테이너는 스프링 빈을 어떻게 등록하고 관리할까요? 스프링 빈은 어떻게 꺼낼 수 있을까요? 안녕하세요. 오늘은 '섹션 4. 스프링 컨테이너와 스프링 빈'을 리뷰하겠습니다. 지난 시간에 스프링 컨테이너와 스프링 빈이 무엇인지를 알아보았습니다. 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에 추가적인 기능을 제공하는 역할을 하는 컨테이너입니다[6]. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부릅니다. 스프링 컨테이너는 @Configuration이 붙은 파일을 구성 정보로 사용하고, @Bean이 붙은 메서드를 호출해 반환된 객체를 스프링 컨테이너에 스프링 빈으로 등록합니다. 이번 시간에는 스프링 컨테이너의 생성과 스프링 빈 조회 등을 학습하며 스프링 컨테이너.. 2022. 1. 5.
3-2. 스프링 핵심 원리 이해2 - 객체 지향 원리 이용(스프링 컨테이너) + 프레임워크 vs 라이브러리 스프링은 AppConfig를 어떻게 지원할까요? 안녕하세요. 오늘은 '섹션 3. 스프링 핵심 원리 이해 2 - 객체 지향 원리 이용' 중 후반부를 리뷰하겠습니다. 전반부에서 SRP, OCP, DIP를 지키기 위해 AppConfig을 활용하는 것을 살펴보았습니다. 이러한 AppConfig의 역할을 해주는 것이 스프링 컨테이너입니다. 오늘의 핵심은 스프링 컨테이너가 무엇인지 이해하는 것입니다. IoC, DI, 컨테이너 먼저 IoC, DI, 컨테이너가 무엇인지 알아보겠습니다. IoC(Inversion of Control): 제어의 역전 IoC는 객체의 생성부터 소멸까지 객체의 모든 생명주기를 개발자가 아닌 컨테이너가 담당하는 것을 의미합니다[2]. 원래 개발자가 해왔던 일을 컨테이너라는 객체 관리 프로그램이 .. 2022. 1. 3.
3-1. 스프링 핵심 원리 이해2 - 객체 지향 원리 이용(AppConfig) OCP, DIP를 지키려면 클라이언트가 구체 클래스에 의존하지 않아야 하는데, 이것이 어떻게 가능할까요? 안녕하세요. 오늘은 '섹션 3. 스프링 핵심 원리 이해 2 - 객체 지향 원리 이용' 중 앞부분을 리뷰하겠습니다. 저번 시간에 회원, 주문, 할인 서비스를 자바 코드로 만들어보았습니다. 인터페이스와 구현체를 나눠서 잘 설계된 것으로 보였는데요. 여전히 좋은 객체 지향 설계 원칙 중 SRP, OCP, DIP를 지키지 못하는 문제가 있어서 AppConfig 를 활용해 해결하는 것이 오늘 강의의 핵심 내용입니다. 저번 시간에 완성한 도메인 다이어그램은 아래와 같습니다. 할인 정책 변경 할인 정책에 초점을 두고 생각해봅시다. 만약 할인 정책이 정액 할인 정책(정해진 금액만큼 할인)에서 정률 할인 정책(정해진.. 2022. 1. 2.
2-2. 스프링 핵심 원리 이해1 - 예제 만들기(주문, 할인) 안녕하세요. 오늘은 섹션2 스프링 핵심 원리 이해1 - 예제 만들기 중 후반부인 주문, 할인 부분을 리뷰하겠습니다. 주문, 할인 정책 요구사항 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1,000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경될 수 있다.) 할인 정책은 변경 가능성이 크다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다. (미확정) 주문 도메인 주문 도메인 클래스 다이어그램 여기까지는 코드를 전부 자바로 짰고, 스프링을 이용하지 않아서 상세한 설명을 생략합니다. 추가적인 궁금증도 없어서 이 게시글은 여기에서 마무리합니다. 현재 다이어.. 2022. 1. 2.
2-1. 스프링 핵심 원리 이해1 - 예제 만들기(회원) + static, map, final 안녕하세요. 오늘은 섹션2 스프링 핵심 원리 이해1 - 예제 만들기를 리뷰하겠습니다. 회원, 주문, 할인 정책을 다루는 간단한 예제를 만들어 보았습니다. 스프링을 활용하지 않고 순수한 자바로 코드를 짰습니다. 역할과 구현을 구분하고, 요구사항이 변경되었을 때 유연한 대처가 가능하도록 하는 것이 이번 섹션의 목표입니다. 이번 게시글에서는 회원 관련 내용을 간단히 살펴보고, 공부하면서 궁금하여 추가로 알아본 내용을 정리해보았습니다. 회원 도메인 요구사항 회원이 가입할 수 있고, 가입 후에는 회원을 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 도메인 협력 관계(기획자와 함께 볼 수 있는 다이어그램) .. 2022. 1. 2.
SOLID: 좋은 객체 지향 설계의 5가지 원칙 좋은 객체 지향 설계를 하기 위해, 어떻게 코드를 작성하면 될까요? 안녕하세요. 좋은 객체 지향 설계의 5가지 원칙 SOLID에 대해 알아보겠습니다. Spring에서 사용되는 언어인 자바는 대표적인 객체 지향 설계 언어 중 하나인데요. Spring 공부의 첫 단계로, 좋은 객체 지향 설계를 위한 원칙 5가지를 알아봅시다. 라는 책으로 유명한 로버트 마틴이 정리한 좋은 객체 지향 설계의 5가지 원칙은 아래와 같습니다. SRP: 단일 책임 원칙 (Single Responsibility Principle) OCP: 개방-폐쇄 원칙 (Open/Closed Principle) LSP: 리스코프 치환 원칙 (Liskov Substitution Principle) ISP: 인터페이스 분리 원칙 (Interface S.. 2022. 1. 2.
스프링과 객체 지향 프로그래밍 스프링의 핵심 개념은 무엇일까요? 안녕하세요. 오늘은 스프링과 객체 지향 프로그래밍에 대해 알아보고자 합니다. 스프링의 핵심 개념은 무엇일까요? '웹 애플리케이션을 만들고 서버를 자동으로 띄워주는 기술' 보다는, '객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크'로 정의하는 것이 좋을 것 같습니다. 프레임워크 참고로, 프레임워크에 대해서 잘 다듬어진 글이 있어서 공유하고 싶습니다. https://jokergt.tistory.com/89 프레임워크란? 프레임워크의 개념을 한번에 잡아주는 좋은 글이다.. 프레임워크란 단어처럼 많이 쓰이면서도 애매한 단어가 없는 것 같다. 일단 구글링을 해 본 결과 다음과 같은 정의를 찾을 수 있었다. === jokergt.tistory.com 글에서는 프레임워크.. 2022. 1. 1.