본문 바로가기

Programming/Java & Spring 관련 내용 정리

[Spring] @Component와 @Bean의 차이가 뭔가요?

스프링은 개발의 제어권이 스프링 컨테이너(IoC 컨테이너)에 있다고 한다. 

그래서 이를 IoC(Inversion Of Control), 제어의 역전이라고 한다.

스프링이 개발자 대신 객체를 제어하기 위해서는 객체들이 빈(Bean)으로 등록되어 있어야 한다.

과거에는 객체를 빈으로 등록하기 위해 XML로 지정했어야 한다고 하는데,

요즘엔 어노테이션으로 간단하게 등록할 수가 있다.

 


스프링에서 빈으로 등록하는 방법은 무엇일까? 


스프링 MVC에서는 @Controller, @Service, @Repository 등으로 빈으로 등록할 수 있으며, 

configuration 관련 객체들은 @Bean과 @Component 으로 스프링 컨테이너에 객체를 빈으로 등록할 수 있다.

 


@Bean 과 @Component의 차이는 무엇일까?

 

@Bean은 메소드 레벨에서 선언하며,

반환되는 객체(인스턴스)를 개발자가 수동으로 빈으로 등록하는 어노테이션이다.

 

 

@Bean 사용 예제

 


@Component는 클래스 레벨에서 선언함으로써

스프링이 런타임시에 컴포넌트스캔을 하여 자동으로 빈을 찾고(detect) 등록하는 어노테이션이다.

 

@Component 사용 예제