김영한님 수업 복기하면서 정리 (진행중)

prana·2024년 5월 26일
0

@Autowired

  • @Autowired 애노테이션을 사용하면 스프링이 자동으로 의존성을 주입합니다.
    👉생성자가 여러 개일 때는 @Autowired를 명시적으로 사용해야 합니다.
    생성자가 하나만 있을 경우, @Autowired를 생략해도 스프링이 자동으로 해당 생성자를 사용하여 의존성을 주입합니다.

빈의 생성과 관리

스프링 IoC 컨테이너는 애플리케이션 시작 시 설정 정보를 바탕으로 빈을 생성하고 초기화합니다. 각 빈의 라이프사이클은 다음 단계로 이루어집니다:

  1. 빈(Bean) 인스턴스 생성
  2. 의존성 주입 (생성자, 세터, 필드 주입 등을 통해)
  3. 초기화 메서드 호출 (필요 시)
  4. 빈 사용
  5. 소멸 메서드 호출 (필요 시)

스프링 빈이란?

스프링 프레임워크에서 관리되는 자바 객체

  • 스프링 빈(Spring Bean)은 스프링 프레임워크에서 관리되는 자바 객체를 의미합니다. 스프링 빈은 스프링 IoC(Inversion of Control) 컨테이너에 의해 생성되고, 관리되며, 필요할 때 다른 객체에 주입됩니다. 스프링 빈을 사용하면 객체의 생명 주기를 스프링 컨테이너가 관리하기 때문에, 개발자는 객체의 생성, 초기화, 의존성 설정, 소멸 등을 신경 쓸 필요가 없어집니다.

  • 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다.(유일하게 하나만 등록해서 공유한다). 따라서 같은 스프링 빈이면 모두 같은 인스턴스다.

의존성 주입이란?

객체가 다른 객체에 대한 의존성을 외부에서 주입받는 방식이다.

  • 의존성 주입은 객체가 다른 객체에 대한 의존성을 외부에서 주입받는 방식입니다. 즉, 객체가 스스로 의존성을 생성하지 않고, 외부에서 제공된다는 의미입니다. 스프링에서는 이 작업을 IoC 컨테이너가 담당합니다.

주입의 종류
스프링에서는 다양한 방식으로 의존성을 주입할 수 있습니다. 대표적으로 생성자 주입, 세터 주입, 필드 주입이 있습니다.

1. 필드 주입

2. Setter 주입

3. 생성자 주입

  • 의존 관계가 실행 중에 동적으로 변하는 경우는 거의 없으므로, 생성자 주입을 권장한다.

참고로, 실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용

  • @Autowired를 통한 DI는 helloController, memberService 등과 같이 스프링이 관리하는 객체에서만 동작한다.

0개의 댓글

관련 채용 정보