티스토리 뷰
반응형
@Component와 컴포넌트 스캔
-
컴포넌트 스캔의 주요 기능
- 스캔하고자 하는 위치를 설정할 수 있다. 즉, 어디서부터 어디까지 스캔할 것인지를 설정하는 것이다.
- @filter를 사용하여 어떤 어노테이션을 스캔할 건지 아니면 안 할건지를 정할 수 있다.
-
@SpringBootApplication
- @SpringBootApplication이 위치한 패키지 안에 있는 것들만 스캔한다.
- 즉, 해당 패키지 안에 있는 것들만 Bean으로 등록할 수가 있다.
-
@filter
- 현재 @SpringBootApplication은 TyeExcludeFilter.class와 AutoconfigurationExcludeFilter.class를 Bean등록에 제한하고 있다.
-
기본적으로 스캔되는 어노테이션
- @Component에 해당하는 어노테이션을 Bean으로 등록한다.
- @Repository
- @Service
- @Controller
- @Configuration
- @Component에 해당하는 어노테이션을 Bean으로 등록한다.
-
패키지 밖에 있는 객체는 영원히 Bean으로 등록 못할까?
-
ApplicationCotextInitalizer<GenericApplicationContext>
를 사용하면 패키지 밖에 있는 객체도 Bean으로 등록할 수 있다. -
해당 방법은 Functional한 Bean 등록 방식이다.
public static ovid main(String [] args) { @Autowired MyService myService; //패키지 밖에 있는 객체 var app = new Stringapplication(DemoApplication.class); app.addInitializers((ApplicationCotextInitalizer<GenericApplicationContext>) ctx -> {ctx.registerBean(MyService.class))}; app.run(args); }
-
- 컴포넌트 스캔의 동작 시점
- 클라이언트가 정의한 Bean을 등록하기 전에
BeanFactoryPostProcessor
를 구현한ConfigurationClassPostProcessor
에 의해 컴포넌트 스캔이 처리된다. - 즉, 다른 Bean(
@Bean
혹은ctx.registerBean
을 통한 Bean)들을 등록하기 전에 컴포넌트 스캔을 통해서 Bean을 등록하는 것이다.
- 클라이언트가 정의한 Bean을 등록하기 전에
- 결과적으로 ComponentScan > @Bean > Funtional가 추천하는 방식이다.
반응형
'Spring > Spring 핵심' 카테고리의 다른 글
[스프링 핵심] Environment (0) | 2019.12.29 |
---|---|
[스프링 핵심] Bean의 Scope (0) | 2019.12.29 |
[스프링 핵심] @Autowired (0) | 2019.12.29 |
[스프링 핵심] ApplicationContext와 여러 Bean 설정 방법 (0) | 2019.12.29 |
[스프링 핵심] IoC 컨테이너와 Bean (0) | 2019.12.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spring
- 연관관계
- 빌더 패턴
- 점층적 생성 패턴
- 정적팩터리메서드
- effectivejava
- 스프링부트
- java8
- 빈 순환 참조
- Effective Java
- flatMap
- try catch finally
- JPA
- jdk버전
- 이펙티브자바
- springboot
- package-private
- ifPresent
- 김영한
- 팩토리 메소드 패턴
- java
- 자바8
- try with resources
- 생성자
- mustache
- junit
- 인프런
- @Lazy
- 이펙티브 자바
- 복사 팩토리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함