티스토리 뷰

SPRING 공부/어노테이션

@SpringBootApplication

CodingDreamTree 2022. 1. 10. 01:35

회사에서 근무 할때나 팀원들과 프로젝트 할때 패키지 경로에 대한 생각을 해본 적이 없었다.

그래서 이번 토이 프로젝트에서 @SpringBootApplication어노테이션이 붙어있는 패키지와 다른 패키지안에

@Configuration이나 @EnableWebSocket등을 다 해줬는데도 설정을 읽어오지 못 했다.

몇시간, 이틀내내 찾아보다가 패키지를 @SpringBootApplication이 붙여져있는 클래스 패키지 하위로 넣었더니

잘 작동 되었다....

이유인 즉슨 Component Scan이 안된것 이다.

이 인터페이스는 많은 역할 을 하고있다.

@EnableAutoConfiguration  : 스프링의 설정이 자동 완료된다.

@ComponentScan  : 컴포넌트 자동 검색 및 구성이 가능하다.

@SpringBootConfiguration : configuration으로 작동하게 해준다. (자바 기반 설정파일)

 

가장 중요한 부분은 

이 부분인데 자세히 보면 ComponentScan.class 어노테이션을 사용해서 속성값을 basePackages로 두고 있다는 것이다.

이 말인 즉슨 해당 패키지부터가 base 패키지여서 이 패키지 밖의 외부 패키지는 ComponentScan을 안한다는 것이다.

 

그런데 외부 패키지 에 있는 파일들을 ComponentScan을 하고싶다면 ?? 어떻게 할까

@SpringBootApplication이 붙어있는 클래스에

@ComponentScan()을 사용하는데 

@ComponentScan(basePackages = {"com.webchat.main.a","com.webchat.main.b"}) 패키지 경로를 통한

basePackages들을 설정하거나

@ComponentScan(basePackageClasses = {projectA.class,projectB.class}) 와 같이 인터페이스 혹은 클래스파일을

이용해서 해당 클래스 파일이 있는 곳을 베이스 패키지로 생각해서 컴포넌트 스캔을 하라는 어노테이션이다.

 

다음에는 이런 실수를 안하도록 조심해야겠다..

'SPRING 공부 > 어노테이션' 카테고리의 다른 글

@PostConstruct  (0) 2022.02.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함