-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
@SpringBootApplication에 @ComponentScan 붙으면 어떻게 되나요?
19.07.03 16:27 작성 조회수 164
1
@SpringBootApplication은 소스를 열어보면 아래처럼@ComponentScan이 같이 걸려 있는데요.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
sj.study.spring.StudyApplication에서 sj.study.other.MyService라는 bean으로 등록하기 위해서 아래처럼 CompoentScan을 사용한다면 기존에 @SpringBootApplication에 포함된 필터나 조건들은 어떻게 되는지 궁금합니다. 아래처럼 하면 동작은 하지만 규칙은 알 수 없어서 질문합니다.
공존하는 것인지 ?
아니면 덮어쓰는지?
경우에 따라 다르다면 어떤 조건이 있는지 궁금합니다.
이런 정보를 알려면 어떤 문서를 참조해야 하는지도 궁금합니다.
감사합니다.
package sj.study.spring;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import sj.study.other.MyService;
@SpringBootApplication
@ComponentScan(basePackages={"sj.study"})
public class StudyApplication {
@Autowired
MyService myService;
@Autowired
BookService bookService;
public static void main(String[] args) {
SpringApplication.run(StudyApplication.class, args);
}
}
답변을 작성해보세요.
0
백기선
지식공유자2019.07.04
기존 설정을 엎어쓰게 되서 @SpringBootApplication 안에 있는 @ComponentnScan은 무시하고 @ComponentScan(basePackages={"sj.study"}) 이 설정이 적용됩니다.
이런건 간단히 코드 작성해서 테스트 해보는게 문서를 찾아보는거 보다 더 빠르고 정확하더라구요.
답변 1