HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
Spring Framework
Spring Framework
/
Core
Core
/
스프링 컨테이너와 스프링 빈
스프링 컨테이너와 스프링 빈
스프링 컨테이너와 스프링 빈

스프링 컨테이너와 스프링 빈

//스프링 컨테이너 생성 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
AppConfig 클래스에 있는 빈을 가지는 ac 객체 생성
1번
1번
🔻
2번
2번
🔻
3번
3번
  • 스프링은 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다.
 
싱글톤이 깨진 것 처럼 보인다. 사실 스프링은 2번 단계에서 그림과 같은 구조를 가지지 않는다.

@Configuration과 바이트코드 조작

 
  • Bean 등록과정에서 AppConfig의 Proxy를 활용함
  • 싱글턴 Instance를 반환하는 기능을 추가한 AppConfigProxy를 활용한다.
  • 이것은 @Configuration의 기능으로 AppConfig를 @Component와 같은 어노테이션으로 등록하면 빈의 싱글턴이 깨진다.
@Bean public MemberRepository memberRepository() { if (memoryMemberRepository가 이미 스프링 컨테이너에 등록되어 있으면?) { return 스프링 컨테이너에서 찾아서 반환; } else { //스프링 컨테이너에 없으면 기존 로직을 호출해서 MemoryMemberRepository를 생성하고 스프링 컨테이너에 등록 return 반환 } }