Spring/spring

@Autowired를 쓰고 안 쓰고의 차이!

코친남 2023. 6. 20. 20:14

★ 글을 쓰게 된 동기 (기억할 수 있다고 생각했지만 계속 까먹어 기록을 하기로 결정!)

@Autowired를 쓰고 안 쓰고의 차이가 무엇이지라는 의문이 들었다.

 

★ 차이를 알아보자!

생성자에서 의존성 주입을 받을 때 예를 들어

public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
    this.memberRepository = memberRepository;
    this.discountPolicy = discountPolicy;
}

이런 코드가 존재할 때 다른 곳에서 MemberRepository와 DiscountPolicy를 주입받고 있다고 생각했다.

 

★ 하지만!

 실상은 그렇지 않았다. @Autowired를 붙이지 않으면 개발자가 수동으로 MemberRepository 타입의 객체와 DiscountPolicy의 객체를 주입해줘야 한다. 이걸 하기 위해서는 개발자는 @Configuration이 붙은 클래스를 하나 생성해 프로젝트의 구성을 하나하나 수동으로 설정해줘야 한다. 하지만 붙인다면!! 따로 구성 클래스를 만들 필요가 없이 클래스 레벨에 @Component를 붙여 빈으로 등록하고 스프링이 스프링 컨테이너에 등록된 빈중 같은 타입의 객체를 자동으로 주입한다.

 

★ 같은 타입의 빈이 여러개라면?

이것은 다음에 알아보도록 하자