IoC 컨테이너에 빈으로 등록이 되어야 의존성 주입을 할 수 있습니다.

먼저, 여러가지 의존성 주입 방법이 있지만 @Autowired를 통해서 주입하는 것을 알아보겠습니다.

 

@Autowired

필요한 의존 객체의 타입에 해당하는 빈을 찾아 주입합니다. 즉, IoC컨테이너 안에 등록되어 있는 빈에서 객체를 찾아 의존성 주입을 해줍니다.

 

 

Bean

스프링 IoC컨테이너가 관리하는 객체이다.

 

  •  장점

1) 의존성 관리가 용이

2) 빈으로 등록된 객체는 기본적으로 스코프가 "싱글톤"으로 정해짐

3) 라이프사이클 인터페이스를 지원해준다.

 

 

  •  BeanFactory

스프링 IoC컨테이너의 가장 최상위 인터페이스이다.

 

 

  • ApplicationContext

BeanFactory를 포함한 다른 컨테이너를 상속받는다.

 

 

  •   Bean 설정 방법 1

1) spring-boot-starter-web 의존성 설정

2) @Component 어노테이션을 클래스에 붙쳐준다. ( 자동으로 빈이 등록됨 )

3) @Autowired 어노테이션을 통해 의존성 주입을 해준다.

 

  • Bean 설정 방법 2 ( Java Config )

1) Config 파일에 @Configuration 어노테이션을 붙쳐준다.

2) @Bean을 통해 직접 빈을 등록해준다.

3) @Autowired를 통해 등록되어 있는 

 

 

 

 

정리

예제 코드를 보면

- @Bean은 Spring에 BookingService를 제공 ( 등록 )

- @Autowired는 이를 사용 ( 의존성 주입 )

 

@SpringBootApplication
public class Application {

  @Autowired
  BookingService bookingService;

  @Bean
  BookingService bookingService() {
    return new BookingService();
  }

  public static void main(String[] args) {
    bookingService.book("Alice", "Bob", "Carol");
  }
}

+ Recent posts