Spring에서 **Bean(빈)**은 Spring IoC (Inversion of Control) 컨테이너가 관리하는 객체를 의미합니다. 즉, Spring이 애플리케이션을 실행할 때 필요에 따라 생성하고, 의존성을 주입하며, 필요한 시점에 제공하는 객체들이 Bean이 됩니다.
Spring에서 Bean은 애플리케이션의 주요 구성 요소로, 서로 협력해 애플리케이션의 비즈니스 로직을 구성합니다. Bean을 사용하면 객체 생성과 소멸을 Spring이 자동으로 관리하므로, 개발자는 객체의 생성과 소멸에 신경 쓰지 않아도 됩니다.
Spring에서는 다음과 같은 방법으로 Bean을 생성하고 관리합니다:
이런 어노테이션을 클래스에 붙이면 Spring이 해당 클래스를 자동으로 인식하고 Bean으로 등록합니다.
import org.springframework.stereotype.Component;
@Component // 이 클래스를 Bean으로 등록
public class MyBean {
public void doSomething() {
System.out.println("Doing something!");
}
}
자동 등록 (컴포넌트 스캔):
@Component
, @Service
, @Repository
, @Controller
같은 어노테이션을 통해 Bean을 자동으로 등록합니다.@ComponentScan
으로 지정된 패키지를 스캔하면서 해당 어노테이션이 붙은 클래스를 찾고 Bean으로 등록합니다.수동 등록 (@Bean):
@Configuration
클래스에서 @Bean
메서드를 사용하여 Bean을 등록할 수 있습니다.import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
Bean은 Spring 컨테이너에 의해 생명 주기(life cycle)를 갖습니다. 이 과정은 다음과 같습니다: