(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 9. 자동, 수동의 올바른 실무 운영 기준 1) 컴포넌트 스캔을 통한 자동 빈 등록과 의존 관계 자동 주입 2) 설정 정보를 통한 수동 빈 등록과 의존 관계 수동 주입 각 방식을 어떠한 경우에 사용해야할지 알아보자. 1. 편리한 자동 기능을 기본으로 사용하자 스프링은 @Component 뿐 아니라 @Controller, @Service, @Repository 처럼 계층에 맞추어 일반적인 애플리케이션 로직을 자동으로 스캔할 수 있도록 지원한다. 최근 스프링 부트는 컴포넌트 스캔을 기본으로 사용하고 스프링 부트의 다양한 스프링 빈들도 조건이 맞으면 자동 등록하도록 설계했다. 설정 정보를 기반으로 애플리케이션을 구성하는 부분과 실제 동..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 4. 롬복과 최신 트랜드 개발을 하면 대부분 불변이므로 필드에 final 키워드를 사용하게 된다. 생성자 주입 방식은 생성자도 만들어야하고 주입 받은 값을 대입하는 코드도 만들어야하는데, 필드 주입처럼 편하게 사용하기 위해 롬복 라이브러리를 사용한다. 1. 기본 코드 @Component public class OrderServiceImpl implements OrderService{ // 1. 필드에 final 키워드 사용 private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; // 2. 생성자 만들기 @Autowire..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 3. 싱글톤 컨테이너 스프링 컨테이너는 싱글톤 패턴의 문제점을 해결하고 객체 인스턴스를 싱글톤(1개만 생성)으로 관리한다. 지금까지 우리가 학습한 스프링 빈은 싱글톤으로 관리되는 빈이다. 1. 싱글톤 컨테이너 - 스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리한다. - 스프링 컨테이너는 싱글톤 컨테이너 역할을 하고 싱글톤 객체를 생성, 관리하는 기능을 싱글톤 레지스트리라고 한다. - 스프링 컨테이너는 싱글톤 패턴의 모든 단점을 해결하면서 객체를 싱글톤으로 유지할 수 있다. 싱글톤 패턴을 위한 지저분한 코드X DIP, OCP, 테스트, private 생성자로부터 자유롭게 자유롭게 싱글톤 사용O 2. ..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 6. BeanFactory와 ApplicationContext 1. BeanFactory BeanFactory는 스프링 컨테이너의 최상위 인터페이스다. - 스프링 빈을 관리, 조회하는 역할을 담당한다. - 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. e.g. getBean() 2. ApplicationContext - BeanFactory 기능을 모두 상속받아 제공한다. - 빈을 관리, 조회하는 기능에 추가로 부가 기능을 제공한다. 3. ApplicationContext가 제공하는 부가기능 1) 메시지소스를 활용한 국제화 기능(MessageSource) e.g. 한국에서 들어오면 한국어로, ..
(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 4. 스프링 빈 조회(동일한 타입이 둘 이상) ac.get(타입)으로 조회할 때, 같은 타입의 스프링 빈이 둘 이상이면 NoUniqueBeanDefinitionException 예외가 발생한다. 이럴 경우, 1) ac.get(빈 이름, 타입) 으로 1개의 빈을 조회한다. 2) ac.getBeansOfType() 으로 해당 타입의 모든 빈을 조회한다. 1. ApplicationContextSameBeanFindTest 예제 코드 package hello.core.beanfind; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberReposi..