Spring 149

[이해2 - 객체 지향 원리 적용] IoC, DI, 그리고 컨테이너

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ 제어의 역전 IoC (Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 것이 아닌 외부에서 관리하는 것 · 기존 프로그램 : 클라이언트 구현 객체가 스스로 필요한 구현 객체를 생성 & 연결 & 실행 · AppConfig 등장 이후 : 클라이언트 구현 객체는 실행 역할만 담당 》ex. OrderServiceImpl : 필요한 인터페이스들을 호출하지만, 어떤 구현 객체가 실행될지 모름 》프로그램의 제어 흐름 → AppConfig ..

[이해2 - 객체 지향 원리 적용] SOLID 中 적용된 3가지 원칙

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다 · AppConfig : 구현 객체 생성 & 연결 · 클라이언트 객체 : 구현 객체 실행 ✨ DIP 의존 관계 역전 원칙 프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다" 의존성 주입은 이 원칙을 따르는 방법 중 하나다 · 기존 : 새로운 할인 정책 적용 시 클라이언트 코드 변경 필요 ∵ OrderServiceImpl → FixDiscountPolicy 구체화 구현 클래스 의존 ..

[이해2 - 객체 지향 원리 적용] 기획자 AppConfig (+ 새로운 할인 정책 적용 문제 해결)

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ AppConfig 등장 · AppConfig : 애플리케이션의 전체 동작 방식을 구성하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스 · 애플리케이션 실제 동작에 필요한 "구현 객체 생성" 》MemberServiceImpl 》MemoryMemberRepository 》OrderServiceImpl 》FixDiscountPolicy · 생성한 객체 인스턴스의 참조를 "생성자를 통해 주입(연결)" 》MemberServiceImp..

[이해2 - 객체 지향 원리 적용] 새로운 할인 정책 도입 (+ 문제점)

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ 새로운 할인 정책 확장하기 : 정률 할인 정책 1. DiscountPolicy 구현체 Class 생성 : RateDiscountPolicy · int discountPercent = 10 · discount : return price * discountPercent / 100 2. test/java/hello.core/discount/RateDiscountPolicyTest Class 생성 후 테스트 class RateDiscountPolicyTest ..

[이해1 - 예제 만들기] 주문과 할인 도메인 설계 → 개발 → 테스트

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ 주문과 할인 도메인 설계하기 · 주문과 할인 도메인 요구사항 》상품 주문 기능 》회원 등급에 따른 할인 정책 적용 : VIP 등급 1000원 할인 (고정 금액 할인) 》(미확정) 할인 정책은 변경 가능성 높음, 최악의 경우 할인 적용 안함 · 주문과 할인 도메인 협력, 역할, 책임 관계 1. 주문 생성 : 클라이언트가 주문 서비스에 주문 생성 요청 2. 회원 조회 : 주문 서비스가 회원 저장소에서 회원 조회 (할인을 위한 회원 등급 조회) 3. 할인 적..

[이해1 - 예제 만들기] 회원 도메인 설계 → 개발 → 테스트

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ 회원 도메인 설계하기 · 회원 도메인 요구사항 》회원 가입 & 조회 》회원 등급 : 일반, VIP 》(미확정) 회원 데이터 자체 DB 구축 가능, 외부 시스템 연동 가능성 · 회원 도메인 협력 관계 · 회원 클래스 다이어그램 ➡️ 인터페이스 : MemberService ➡️ 구현체 : MemberServiceImpl ➡️ MemberRepository = 회원 저장소 · 회원 객체 다이어그램 (객체 간 메모리 참조) ➡️ 회원 서비스 : MemberSe..

[이해1 - 예제 만들기] 비즈니스 요구사항과 설계 - 회원, 주문과 할인 정책

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 😳 회원 회원 가입 & 조회 회원 등급 : 일반, VIP (미확정) 회원 데이터 자체 DB 구축 가능, 외부 시스템과 연동 가능성 📃 주문과 할인 정책 상품 주문 기능 회원 등급에 따른 할인 정책 고정 금액 할인 : 모든 VIP 등급 1000원 할인 (추후 변경 가능) (미확정) 할인 정책은 변경 가능성이 높음, 최악의 경우 적용하지 않을 가능성 ✔️ 정리 · 현재 결정하기 어려운 부분 → 객체 지향 설계 필요 · 인터페이스 구현 후 언제든지 갈아끼울 수 ..

[이해1 - 예제 만들기] 프로젝트 생성 & 실행

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 스프링 없이 순수 자바로 구현 시작 ☑️ 사전 준비물 》Oracle JDK 의 Java 11 설치 》IDE : IntelliJ 또는 Eclipse 설치 1️⃣ 스프링 부트 스타터 사이트에서 프로젝트 생성하기 → Dependencies 선택 안함 : core library 만 가지고 간단하게 생성 2️⃣ 프로젝트 시작하기 · 다운로드된 폴더 압축 해제 후 build.gradle 실행 plugins { id 'java' id 'org.springframewor..

[객체 지향 설계와 스프링] 정리

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ 스프링에서의 객체 지향 설계 · 스프링 지원 기술 → 다형성 + OCP, DIP 가능 》DI (Dependency Injection) : 의존 관계, 의존성 주입 》DI 컨테이너 제공 · 클라이언트 코드의 변경 없이 기능 확장 가능 · 모든 설계에 역할과 구현 분리하기 ✨ 실무 고민 · 인터페이스 도입 시 추상화 비용 발생 ➡️ 기능을 확장할 가능성이 없다면, 구체 클래스 사용 ➡️ 필요 시 리팩터링으로 인터페이스 도입하기

[객체 지향 설계와 스프링] SOLID

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard SOLID : 클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP - 단일 책임 원칙 ⭐OCP - 개방·폐쇄 원칙 LSP - 리스코프 치환 원칙 ISP - 인터페이스 분리 원칙 ⭐DIP - 의존 관계 역전 원칙 ✨ SRP 단일 책임 원칙 · Single Responsibility Principle 》 한 클래스는 하나의 책임만 가져야 함 》 중요한 기준 : 변경 → 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따..

728x90