해결된 질문
작성
·
358
3
안녕하세요 선생님 AppConfig.class관련하여 질문드리려고 합니다.
해당 영상에서 7:12부분에
이 세라인이 호출되는 것을 볼 수 있습니다.
허나, 7:12까지의 상황은
AutoAppConfig.class에서 다른 클래스의 @Configuration이 선언된 모든 @Bean객체를 만들지 않는 것으로 알고 있습니다.
@Configuration
@ComponentScan(
excludeFilters = @ComponentScan.Filter (type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
}
따라서, AppConfig.class도 @Configuration이 정의 되어 있으므로 Bean객체를 만들지 않는 것으로 이해했습니다.
그런데 보시는 바와 같이
이 세라인이 호출되는데...
왜 호출되는건지... 궁금합니다...
답변주시면 정말 감사드리겠습니다.
추가로, 선생님 강의 정말 감사드립니다.
요즘 정말 개발에 흥미를 느끼고 하루하루 알아가는 즐거움에 살고 있습니다.
선생님 덕에 개발에 흥미를 붙일 수 있어서, 정말 감사한 마음 뿐입니다.
이렇게 좋은 강의를 널리 알려주셔서 정말 감사드립니다.
앞으로도 좋은 강의 많이 부탁드리겠습니다.
감사합니다.
답변 3
1
0
음... 이해가 잘 안 되는데요,
1. AutoAppConfig와 AppConfig는 같은 레벨의 디렉토리에 있고,
2. AutoAppConfig의 ComponentScan에 의해 hello.core의 모든 하위 소스들이 스캔 대상이 될 것이고,
3. 그 범위에는 AppConfig도 포함이 되고,
4. 그렇다면 결국 AppConfig는 AutoAppConfig의 ComponentScan에 있는 filter의 영향을 받아야 하는 것이 맞지 않나..?
하는 생각이 듭니다.
혹시 이 부분에서 제 오류를 잡아주실 분 계실까요??
헷갈려하시는 부분이 자동 vs 수동 부분에서 AutoAppConfig(자동)의 Filter 때문에 애초에 AppConfig(수동)의 수동 설정이 영향을 받지 않아야 하는데 결과 콘솔에는 오버라이딩 되었다고 출력되는 부분인것 같습니다. 혹시 이 부분이 맞다면 AutoAppConfig가 @ComponentScan으로 자동 스캔도 하지만 강의 내용 2:44 에 보시면 같은 AutoAppConfig에 수동으로 빈을 또 등록해줍니다. 그래서 자동 vs 수동을 비교하여 볼 수 있었던 것 같습니다.
0
제가 곰곰이 생각해보니...
@SpringBootApplication 설정에서 filter를 설정하지 않았기 때문에
AppConfig.class가 실행되는것이 맞는것 같습니다.
그렇다면 @SpringBootApplication 설정에서 실행한다면,
AppConfig.class에서 수동으로 선언된 @Bean들이 Bean객체로 만들어짐. --> 수동
@Component로 선언되어진 클래스가 Bean객체로 만들어 짐. --> 자동
정리하자면
1. 수동으로 Bean객체생성
2. 자동으로 Bean객체 생성
그렇다면 수동 Bean객체가 우선순위를 가지므로 현재 Spring Container가 가지고 있는 Bean객체들은 1번의 객체들이 들어가게 된다고 이해하는게 맞나요?
질문하면서 정리가 된 느낌이라... 제가 제대로 이해한건지 궁금하여 문의 드립니다.
감사합니다.
감사합니다!!