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

[Spring] 의존관계 자동 주입(2/2) - @Autowired, @Qualifier, @Primary

의존성 주입을 위해 빈을 주입할 때 조회된 빈이 2개 이상일 경우가 있습니다. 다음과 같은 경우입니다. @Autowired는 빈의 타입으로 빈을 조회하는데, @Component public class FixDiscountPolicy implements Discountpolicy{} @Component public class RateDiscountPolicy implements DiscountPolicy {} 위와같이 DiscountPolicy 인터페이스를 FixDiscountPolicy와 RateDiscountPolicy가 구현하고 있을 경우 @Autowired private DiscountPolicy discountPolicy DiscountPolicy 타입으로 빈을 주입받으려고 하면 NoUniqueB..

[Spring] 의존관계 자동 주입 - 생성자 주입을 선택하자!

의존관계 의존관계 주입에는 크게 4가지가 있습니다. 생성자 주입 수정자 주입 필드 주입 일반 메서드 주입 생성자 주입 생성자 호출 시점에 1번만 호출되어 불변, 필수 의존관계에 사용됩니다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memb..

[Spring] 컴포넌트 스캔

스프링 빈을 등록할 때는 @Bean 어노테이션이나 XML의 태그를 통해 설정 정보에 직접 등록할 스프링 빈을 명시해주는 방법이 있는데요. 등록해야 할 빈이 많을 때는 일일이 등록하기에는 한계가 있고 누락문제도 발생할 수 있죠,, 그래서! 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공하고 있습니다. 또 의존관계도 자동으로 주입하는 @Autowired 기능도 제공합니다. @ComponentScan @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class), includeFilters = @Filt..

[Spring] 싱글톤 컨테이너

이 글은 김영한님의 스프링 핵심원리 기본편 강의를 보고 공부용도로 정리한 내용입니다.^&^ 스프링은 객체를 싱글톤으로 관리한다 스프링 컨테이너는 기본적으로 객체 인스턴스를 싱글톤(1개만 생성)으로 관리합니다. 이렇게 싱글톤 객체를 생성하고 관리하는 기능을 싱글론 레지스트리라 합니다. 스프링 컨테이너의 이런 기능 덕분에 싱글턴 패턴의 모든 단점을 해결하면서 객체를 싱글톤으로 유지할 수 있습니다. 스프링 빈으로 등록할 객체들을 @Bean 어노테이션을 이용하여 다음과 같이 명시할 수 있습니다. AppConfig.java @Configuration public class AppConfig { @Bean public MemberService memberService(){ System.out.println("cal..