ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @SpringBootApplication
    SPRING 공부/어노테이션 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
Designed by Tistory.