Spring - Component vs Bean vs Configuration

@Bean은 메소드 레벨에서 선언하며, 반환되는 객체(인스턴스)를 개발자가 수동으로 등록하는 Annotation인 반면에

 

@Component는 클래스 레벨에서 선언하며 스프링이 Runtime(실행) 될 시에  Component를 스캔하여 자동으로 bean을 찾고 등록하는 Annotation이다. 

 

Bean Component
메소드에 사용 클래스에 사용
개발자가 컨트롤이 불가능한
외부 라이브러리 사용시 사용
개발자가 직접 컨트롤이 가능한
내부 클래스에 사용

 

추가적으로 @Configuration은 @bean과 동일하게 개발자가 컨트롤이 불가능한 외부 라이브러리 사용시

한번에 여러개의 Bean을 등록하기 위해서 사용하는 Annotation이다.

 

@Configuration 예제 코드

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
@Configuration // 한개의 클래스에서 여러개의 bean을 등록할때 사용하는 어노테이션
class Appconfig{
    @Bean("base64Encode"//Encoder라는 동일한 자료형의 객체이니까Bean 어노테이션에서 이름을 붙여주도록 한다.
    public Encoder encoder(Base64Encoder base64Encoder){
        return new Encoder(base64Encoder);
    }
 
    @Bean("urlEncode"// urlEncoder라는 명이 이미등록되어있어서 de로
    public Encoder encoder(UrlEncoder urlEncoder){
        return new Encoder(urlEncoder);
    }
    // 이처럼 스프링 컨테이너 안에서 여러가지 Bean들을 담아서 관리할 수 있다.
}
cs