@ComponentScan 시 Singleton방식
470
작성한 질문수 1
안녕하세요! 강사님
다름이아니라 라이브코딩 도중 의문점이 생겨서 질문 남겨봅니다!
번거로우실텐데 죄송합니다
질문1.
강의에서 본것처럼 AppConfig.class 에서 @Configuration 이 붙지않으면 스프링 컨테이너가 스프링빈들을 전부 싱글톤 방식이 아닌 계속 인스턴스생성을하여 메모리 낭비가 되는 모습까지는 이해했습니다.
근데, AutoAppConfig.class에서 @ComponentScan 시에 @Configuration 애노테이션을 안붙여도 모든 Component들이 스캔 후 알아서 싱글톤방식으로 빈이 생성되는것을 test코드를 통해 확인했습니다!
AutoAppConfig에서 컴포넌트 스캔 자체가 AppConfig같은 설정정보 없이도 @Component만을 탐색해서 빈을 등록하는거까지는 이해하고는 있는데 왜 @Configuration 애노테이션을 안붙여도 자동적으로 싱글톤방식으로 빈이 생성되는지 궁금합니다!
제가 뭘 놓치고 있는걸까요???
답변 1
11
안녕하세요. seungLee님
@Configuration 애노테이션과 싱글톤 방식은 무관합니다. 그리고 컴포넌트 스캔과 @Configuration 애노테이션도 서로 관계가 없습니다. (@Configuration이 컴포넌트 스캔의 대상이 되는 것만 의미가 있습니다.)
스프링은 컴포넌트 스캔시 기본으로 싱글톤으로 빈을 등록합니다. 그리고 @Configuration 없이 @Bean만 사용해서 스프링 빈을 등록해도 싱글톤으로 등록됩니다.
싱글톤이 안되고, 문제가 되는 부분은 @Bean으로 수동 등록할 때, 내부의 의존관계를 직접 메서드 호출로 주입할 때만 발생하고, 이때 문제를 해결해주는 것이 @Configuration 애노테이션입니다. 이 부분은 @Configuration과 싱글톤, 그리고 @Confiruation과 바이트코드 조작의 마법 부분을 다시 복습해보시길 바랍니다.
감사합니다.
코드 자료
0
30
2
구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?
0
51
2
MemberService의 인터페이스를 왜 사용하는지 궁금합니다.
0
75
1
롬복 @Setter를 써야 하는 상황이 있는건가요?
0
89
1
빈 등록 메서드의 파라미터가 빈이 아니어도 되나요?
0
81
1
테스트 속도가 나중에 영향이 있을까요?
0
77
1
gradle 설정 안떠서 질문 남깁니다!
0
121
2
build.gradle로 프로젝트를 여는 이유
0
85
1
provider 사용하는 이유
0
88
1
다음 강의 뭘 들어야 할까요
0
126
2
프로토타입 빈, 직접 destroy 호출 안 할 경우
0
64
1
beanB
0
82
2
퀴즈다시풀기
0
67
1
Gradle로 바꿔도 오류가 똑같이 발생하네요 ㅠㅠ
0
92
2
"중복 등록과 충돌" 강의에서 강사님과 다른 에러가 발생합니다.
0
66
3
run 실행했는데 결과창이 이렇게 뜨네요 왜 그런건가요>
0
106
2
도메인의 정의?
0
59
1
ApplicationContext 질문입니다.
0
63
1
@Scope의 proxyMode를 사용할때 단위 테스트 방법
0
88
2
ai api 선정하기 관련 질문
0
118
2
생성자 자동주입 관련해서
0
64
1
생성자 직접 호출 vs 팩토리 메서드 패턴
0
96
2
Spring에서 SessionScope와 RequestScope는 함께 사용되나요?
1
65
1
12:25
0
77
2





