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

[스프링 컨테이너와 스프링 빈] BeanFactory 와 ApplicationContext

🧐강의🧐 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 ✨ BeanFactory · 스프링 컨테이너의 최상위 인터페이스 · 스프링 빈을 관리, 조회하는 역할 · getBean() ✨ ApplicationContext · BeanFactory 의 기능을 상속받아 제공 (BeanFactory 기능 + ɑ ) ✅ ApplicationContext 가 제공하는 부가 기능 · MessageSource : 메세지 소스를 활용한 국제화 기능 (ex. 한국 → 한국어, 영어권 → 영어) · EnvironmentCapable ..

[스프링 컨테이너와 스프링 빈] 스프링 빈 조회 - 기본, 동일한 타입이 둘 이상, 상속 관계

🧐강의🧐 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 ✨ 스프링 빈 조회 - 기본 ☑️ 스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적인 조회 방법 · ac.getBean(빈 이름, 타입) · ac.getBean(타입) ⚠️ 주의 ⚠️ 조회 대상의 스프링 빈이 없으면 예외 발생 - NoSuchBeanDefinitionException : No bean named 'xxxx' available · test/java/hello.core/beanfind/ApplicationContextBasicFindTest 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 ✅ 스프링 컨테이너에 실제로 스프링 빈이 등록되었는지 확인하기 ✨ 모든 빈 출력하기 ☑️ 스프링에 등록된 모든 빈 출력 1. test/java/hello.core 에 beanfind 이름의 Package 생성 2. beanfind 패키지에 ApplicationContextInfoTest 이름의 Class 생성 public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = n..

[스프링 컨테이너와 스프링 빈] 스프링 컨테이너 생성

🧐강의🧐 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 사용 · XML 기반 ✨ 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생성 (자바 설정 클래스 기반) ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ➡️ Application Context : ..

[이해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 ✨ 스프링 컨테이너 · ApplicationContext = 스프링 컨테이너 · @Configuration 이 붙은 AppConfig 를 설정(구성) 정보로 사용 · @Bean 이 적힌 메서드를 모두 호출 후 반환된 객체를 스프링 컨테이너에 등록 → 스프링 빈 · 스프링 빈 이름 : @Bean 이 붙은 메서드 명 (ex. memberService, orderService) · 스프링 빈 찾기 : applicationContext.getBean() 메서드 사..

[이해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. 할인 적..

728x90