Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스프링 핵심 원리
- SpringBoot
- pointcut
- Exception
- 스프링
- 김영한
- kotlin
- jpa
- Proxy
- Servlet
- JDBC
- db
- 그리디
- 백준
- Android
- 스프링 핵심 기능
- Thymeleaf
- 알고리즘
- 자바
- QueryDSL
- spring
- Spring Boot
- Greedy
- transaction
- JPQL
- java
- 인프런
- springdatajpa
- AOP
- http
Archives
- Today
- Total
개발자되기 프로젝트
Component Scan의 탐색 위치와 스캔 대상 본문
1. 탐색할 패키지 시작위치 지정(basePackages)
- 모든 클래스를 다~~ 뒤지면 오래걸린다. 꼭 필요한 위치부터 탐색하도록 하자.
- 그냥 냅두면 라이브러리까지 다뒤짐....
- @ComponentScan(
basePackages = "~~~" ) - 해당 패키지를 포함해서 하위 패키지를 전부 탐색
- {"~~", "~~~~"} 여러 패키지를 탐색 시작 위치로 지정 가능
-
@Configuration @ComponentScan( //스캔에서 제외할 것 -->@ComponentScan도 @Component임, AppConfig나 TestConfig제외하기 위해. excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class), basePackages = "hello.core" ) public class AutoAppConfig { }
- basePackageClasses는 해당 클래스의 패키지를 시작 위치로 지정.
2. 시작위치 지정하지 않으면???
@ComponentScan을 붙인 클래스의 패키지부터 시작함.
- 전부 다 뒤질 수 있다.아.... 그래서 밖으로 빼둔건가...????
3. 권장하는 방법
- 설정정보 클래스를 패키지 위치를 지정하지 않고,
- 프로젝트 최상단에 두는 것!!! 스프링부트도 이 방법을 기본으로 제공함
- 그리고 basePackages 생략 ㅋㅋㅋ
- 또한 프로젝트 메인 설정 정보는 프로젝트를 대표하는 정보이기 때문에!!
- 프로젝트 시작 루트위치에 두도록 하자.
- 참고로....스프링 부트의 대표 시작 정보인 @SpringBootApplication를 프로젝트 시작 위치에 두는 것이 관계...
- 그리고 @SpringBootApplication 안에 @ComponentScan있음!!
4. 기본 스캔 대상
- @Component : 컴포넌트 스캔에서 사용
- 아래 annotation은 모두 열어보면 @Component 붙어있음.
- @Controller : 스프링 MVC컨트롤러에서 사용 --> MVC Controller로 인식
- @Service : 스프링 비즈니스 로직에서 사용 --> 특별한 처리 없는데.."비즈니스 로직 여기있어요!"
- @Repository : 스프링 데이터 접근 계층에서 사용 --> 스프링 데이터 접근 계층으로 인식,
데이터 계층의 예외를 스프링 예외로 변환해줌. - @Configuration : 스프링 설정 정보에서 사용 --> 스프링 설정 정보, 스프링 빈이 싱글톤 유지하도록 추가 처리.
- 사실.. annotation에는 상속관계가 없다. 어떤 annotaion이 특정 annotation을 들고 있는 것을 인식할 수 있는 이유?
- 스프링에서 지원함... ㅗㅜㅑ
'인프런 > [인프런] Spring 핵심원리 이해' 카테고리의 다른 글
컴포넌트 스캔, 중복 등록, 충돌 (0) | 2021.07.28 |
---|---|
컴포넌트 스캔, 필터 (0) | 2021.07.28 |
Component 스캔, @Autowired (0) | 2021.07.28 |
@Configuration, 싱글톤, 바이트코드 조작 (0) | 2021.07.28 |
싱글톤, 싱글톤 컨테이너, 스프링 컨테이너 (0) | 2021.07.27 |
Comments