[Spring] Bean

| 빈(Bean)

  • Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean) 이라고 부른다.

  • new 연산자로 생성한 객체는 빈이 아니다.

  • ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다.

  • 즉 Spring에서의 빈은 ApplicationContext가 알고 있는 객체, ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다

 

| 빈(Bean)을 등록하는 방법?

  1. Component Scanning*

  2. 직접 XML이나 자바 설정 파일에 등록 (But, XML로 사용할 경우 빈을 일일이 다 등록 해줘야 하는 불편함이 있다. 그래서 등장한 것이 Component Scan 이다.)

 

| Component Scan 을 통한 등록 방법

  • @ComponentScan 어노테이션과 @Componet 어노테이션을 사용해서 빈을 등록하는 방법이다.

  • @ComponentScan 어노테이션은 어느 지점 부터 컴포넌트를 찾으라고 알려주는 역할을 하고 @Component는 실제로 찾아서 빈으로 등록할 클래스를 의미한다.

  • Spring IoC 컨테이너가 IoC 컨테이너를 만들고 그 안에 빈을 등록할 때 사용하는 인터페이스들을 라이프 사이클 콜백 이라고 부른다.

  • 라이프 사이클 콜백 중에는 @Component 애노테이션을 찾아서 이 애노네이션이 붙어있는 모든 클래스의 인스턴스를 생성해 빈으로 등록하는 작업을 수행하는 애노테이션 프로세서가 등록되어 있다.

 

| 설정파일에 직접 빈(Bean)을 등록하는 방법

  • 자바 설정파일은 일반적으로 xxConfiguration과 같이 작성한다.
  • 그리고 클래스에 @Configuration 애노테이션을 붙이고 그 안에 @Bean 애노테이션을 붙여 직접 Bean을 등록한다.
  • @Configuration 애노테이션은 @Component를 사용하기 때문에 @ComponentScan의 대상이 되고 빈 설정 파일이 읽힐 때 그 안에 정의되어 진 Bean들이 IoC 컨테이너에 등록이 된다.
@Configuration
public class SampleConfiguration {
    @Bean
    public SampleController sampleController() {
        return new SampleController;
    }
}

댓글

Designed by JB FACTORY