본문 바로가기
개발/Spring

[스프링 입문] 스프링 회원관리 예제 - 5. 스프링 빈과 의존관계

by ujin2021 2021. 6. 30.

* 인프런 김영한님의 '스프링 입문' 강의를 듣고 작성한 내용입니다! (https://inf.run/txXC)

스프링 빈을 등록하는 2가지 방법

1. 컴포넌트 스캔과 자동 의존 관계 설정

    • @Component annotation - @Controller, @Service, @Repository 는 이미 @Component 포함
    • 회원 서비스 스프링 빈 등록

 

  •  
  • Constructor에 @Autowired를 사용하면 객체 생성 시점에 스프링 컨테이너에서 해당 스프링 빈을 찾아서 주입한다 (스프링이 스프링 컨테이너에 있는 MemberRepository를 가져다가 연결시킨다)
  • Constructor가 1개이면 @Autowired를 생략가능하다

 

2. 자바코드로 직접 스프링 빈 등록하기

  • SpringConfig 파일에서 @Bean으로 관리
  • 회원 서비스와 레포지토리에서 @Service, @Repository, @Autowired를 모두 제거하고 진행한다

* 참고로 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다 (유일하게 하나만 등록해서 공유)

* 같은 스프링 빈이면 모두 같은 인스턴스이다

* 주로 정형화된 Controller, Repository, Service는 1번 방식을 사용한다

* 정형화 되지 않거나 상황에 따라 구현이 변하는 것은 2번을 통해 스프링 빈으로 등록한다

* @Autowired를 통한 DI는 스프링이 관리하는 객체에서만 동작한다. 스프링 빈으로 등록하지 않고 내가 직접 생성한 객체에서는 동작하지 않는다