-
[Spring] @Configuration과 싱글톤인프런 - 스프링/핵심 원리 2023. 7. 20. 10:51
예제 코드
- 해당 코드에서 스프링 빈을 등록할 때 memberRepository() 메서드는 총 세 번 호출이 될 것 같지만 실제로는 한 번만 호출이 된다.
- 그 이유는 @Configuration 애너테이션을 통해 바이트코드를 조작하기 때문이다.
출력 결과
- AppConfig 스프링 빈을 조회해서 클래스 정보를 출력해보면 클래스 명에 xxxCGLIB가 붙어있음을 확인할 수 있다.
- 이것은 내가 만든 클래스가 아니라 스프링이 CGLIB라는 바이트코드 조작 라이브러리를 사용해서 AppConfig 클래스를 상속받은 임의의 다른 클래스를 만들고, 그 클래스를 스프링 빈으로 등록한 것이다.
- 그 임의의 다른 클래스가 바로 싱글톤이 보장되도록 해준다.
따라서 @Configuration을 적용하지 않고 @Bean만 적용한다면 싱글톤을 보장해주지 않는다.
추가적으로 위의 예제 코드에서 return new MemberServiceImpl(memberRepository()); 부분에서 memberRepository() 메서드를 직접호출하여 생성된 객체는 싱글톤 뿐만 아니라 스프링 빈으로 등록이 되지 않는다.
출처: 인프런 김영한님의 스프링 핵심 원리 - 기본편
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! 📢
www.inflearn.com
'인프런 - 스프링 > 핵심 원리' 카테고리의 다른 글
[Spring] 의존관계 자동 주입 (0) 2023.08.08 [Spring] 컴포넌트 스캔 (0) 2023.07.20 [Spring] 싱글톤 방식의 주의점 (0) 2023.07.19 [Spring] assertj의 isSameAs와 isEqualTo의 차이 (0) 2023.07.19 [Spring] 싱글톤 패턴과 싱글톤 컨테이너 (0) 2023.07.19