@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 |
'Spring' 카테고리의 다른 글
ContextConfiguration cannot be resolved to a type 에러 (0) | 2022.01.19 |
---|---|
Spring - Junit Test (0) | 2022.01.17 |
Spring - Bean과 ioc에 대해서 (예제 코드) (0) | 2022.01.11 |
Spring - DI (의존성 주입) 이란 무엇인가? (0) | 2022.01.11 |
Spring - 왜 Spring을 쓰는가? (0) | 2022.01.11 |