Backend/Spring 19

[섹션 4] BeanFactory와 ApplicationContext

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. BeanFactory와 ApplicationContext BeanFactory 스프링 컨테이너의 최상위 인터페이스다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean()을 제공한다. 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해주는데, 그러면 그 둘의 차이가 뭘까? 애플리케이션을 개발할 때는 빈을 관리하고 조회하는 기능은 물론이고, 수 많은 부가 기능이 필요하다. ApplicationContext가 제공하는 부가기능 메시지소스를 활용한 국제화 기..

Backend/Spring 2024.03.18

[섹션 4] 스프링 빈 조회 - 상속관계

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 부모 타입으로 조회하면, 자식 타입도 함께 조회한다. 그래서 모든 자바 객체의 최고 부모인 Object타입으로 조회하면, 모든 스프링 빈을 조회한다. package com.hello.core.beanfind; import com.hello.core.discount.DiscountPolicy; import com.hello.core.discount.FixDiscountPolicy; import com.hello.core.discount.RateDiscountPolicy; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframe..

Backend/Spring 2024.03.18

[섹션 4] 스프링 컨테이너와 스프링 빈

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 컨테이너에 등록된 모든 빈 조회 ApplicationContextInfoTest package com.hello.core.beanfind; import com.hello.core.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class ApplicationContex..

Backend/Spring 2024.03.18

[섹션 3] 스프링으로 전환하기

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 이전까지 사용한 순수 JAVA 코드 (AppConfig) package com.hello.core; import com.hello.core.discount.DiscountPolicy; import com.hello.core.discount.RateDiscountPolicy; import com.hello.core.member.MemberRepository; import com.hello.core.member.MemberService; import com.hello.core.member.MemberServiceImpl; import com.hello.core.member.MemoryMemberRepository; import com.hello.c..

Backend/Spring 2024.03.18

[섹션 3] IoC, DI, 그리고 컨테이너

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 제어의 역전 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. (구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. 예를 들어서 OrderServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다. 프로그램에 대한 제어 흐름에 대한 권한은 모두 AppConfig가 가지고 있다. 심지어 OrderServiceImpl 도 AppConfig가 생성한다. AppConfig는 OrderServiceImlp이 아닌 Order..

Backend/Spring 2024.03.18

[섹션 3] AppConfig과 생성자 주입

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 관심사의 분리 디카프리오는 어떤 여자 주인공이 선택되더라도 똑같이 공연할 수 있어야 한다. AppConfig의 등장 애플리케이션의 전체 동작 방식을 구성하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스 package com.hello.core; import com.hello.core.discount.FixDiscountPolicy; import com.hello.core.member.MemberService; import com.hello.core.member.MemberServiceImpl; import com.hello.core.member.MemoryMemberRepository; import com.hello..

Backend/Spring 2024.03.18

[섹션 3]스프링 핵심 원리 이해2 - 객체 지향 원리 적용

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. 새로운 할인 정책 개발 → 새로운 할인 정책을 확장시킬 수 있도록. **RateDiscountPolicy** “아 고정 1000원 할인하는거보다는 그냥 퍼센트로 할인하는게 낫지 않을까요~” “계획을 따르기 보다 변화에 대응하기를..” 해결방법: DiscountPolicy interface에 FixDiscountPolicy와 RateDiscountPolicy를 종속시키면 된다!! RateDiscountPolicy package com.hello.core.discount; import com.hello.core.member.Grade; import com.hello.core.member.Member; public class RateDiscountP..

Backend/Spring 2024.03.18

[섹션 2]스프링 핵심 원리 이해1 - 예제 만들기

> 본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. # [섹션 2]스프링 핵심 원리 이해1 - 예제 만들기 태그: ✏️ 이론 날짜: 2023년 9월 29일 상위 항목: 스프링 핵심 원리 - 기본편 (https://www.notion.so/746f4c02234143b88f78234d1e1741d9?pvs=21) 상태: Done ## 비지니스 요구 사항과 설계 회원 + 주문 + 할인 정책 할인정책 → 추후에 변경 가능성 높음 (할인 정책은 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 있다…) 객체 지향 설계 방법이 있으니깐 !!! 해결 가능… 인터페이스를 만들고 → 구현체를 언제든지 갈아끼울 수 있도록 설계!! ### 회원 도메인 설계 - 회원 도메인 요구사항 - 회원을 가입하고 조회할 수..

Backend/Spring 2024.03.18

[섹션 1]객체 지향 설계와 스프링

본 게시물은 김영한 선생님의 강의를 학습하며 작성하였습니다. EJB 엔터티빈 → 하이버네이트 → JPA 현재 JPA가 Java ORM 시장을 다 잡아먹고 있다! 하이버네이트는 실무 개발자들이 개발하다보니 편하게 하고싶어서 개발한 것인데 오픈소스의 단점(무언가에 특화된..)을 정제해서 JPA를 만들게 된 것이다!! 🌱스프링 프레임워크 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술: 스프링 MVC, 스프링 WebFlux 데이터 접근 기술: 트랜잭션, JDBC, ORM지원, XML 지원 기술 통합: 캐시, 이메일, 원격접근, 스케줄링 테스트: 스프링 기반 테스트 지원 언어: 코틀린, 그루비 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용 스프링 부트 스프링을 편리..

Backend/Spring 2024.03.18