Spring에서 **Bean(빈)**은 Spring IoC (Inversion of Control) 컨테이너가 관리하는 객체를 의미합니다. 즉, Spring이 애플리케이션을 실행할 때 필요에 따라 생성하고, 의존성을 주입하며, 필요한 시점에 제공하는 객체들이 Bean이 됩니다.

1. Bean의 역할

Spring에서 Bean은 애플리케이션의 주요 구성 요소로, 서로 협력해 애플리케이션의 비즈니스 로직을 구성합니다. Bean을 사용하면 객체 생성과 소멸을 Spring이 자동으로 관리하므로, 개발자는 객체의 생성과 소멸에 신경 쓰지 않아도 됩니다.

2. Bean 생성과 관리 방식

Spring에서는 다음과 같은 방법으로 Bean을 생성하고 관리합니다:

이런 어노테이션을 클래스에 붙이면 Spring이 해당 클래스를 자동으로 인식하고 Bean으로 등록합니다.

import org.springframework.stereotype.Component;

@Component  // 이 클래스를 Bean으로 등록
public class MyBean {
    public void doSomething() {
        System.out.println("Doing something!");
    }
}

3. Bean 등록 방법

  1. 자동 등록 (컴포넌트 스캔):

  2. 수동 등록 (@Bean):

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class AppConfig {
        @Bean
        public MyBean myBean() {
            return new MyBean();
        }
    }
    
    

4. Bean의 라이프 사이클

Bean은 Spring 컨테이너에 의해 생명 주기(life cycle)를 갖습니다. 이 과정은 다음과 같습니다: