Bean은 Spring의 IoC Container에 의해 관리되고 (managed), 객체가 되고 (instatiated), 가공되는(assembled) object로 IoC가 의존성을 주입할 때 사용된다. 쉽게 이해하면 IoC Container가 관리하는 객체를 Bean이라고 한다.
IoC란?
스프링 IoC(Inversion of Control)는 제어의 역전이라는 의미로, 객체의 생성 및 의존성 관리를 개발자가 직접 하는 것이 아니라 스프링 컨테이너에게 위임하는 것을 말한다.
IoC 컨테이너는 스프링 프레임워크의 핵심 부분이며, 애플리케이션의 객체(빈, Bean)를 생성하고 관리하며, 객체 간의 의존성을 주입하는 역할을 한다.
제어 역전(IoC;IoC, Inversion of Control)을 특징으로 하는 스프링은 기존 자바 개발 방식과 다르게 동작해야 한다. 그렇기에 IoC가 관리하는 객체를 Bean을 이용한다.( 개발자들은 객체의 제어권을 컨테이너로 넘김으로 비즈니스 로직을 작성하는 데 더 집중할 수 있다.)
즉 Bean은 IoC라는 스프링의 핵심을 더 잘 구현하기 위해서 사용된다.
@Component
public class MyComponent {
// IoC 컨테이너가 관리하는 Bean
}
@Service
public class MyService {
// 비즈니스 로직을 처리하는 Bean
}
@Repository
public class MyRepository {
// 데이터베이스 관련 Bean
}
@Controller
public class MyController {
// 웹 요청을 처리하는 Bean
}
@Configuration
public class MyConfig {
@Bean
public MyComponent myComponent() {
return new MyComponent(); // 직접 객체 생성 후 Bean 등록
}
}