//스프링 컨테이너 생성
ApplicationContext ac
						= new AnnotationConfigApplicationContext(AppConfig.class);

1번

1번

                                                             🔻

2번

2번

                                                            🔻

3번

3번

싱글톤이 깨진 것 처럼 보인다. 사실 스프링은 2번 단계에서 그림과 같은 구조를 가지지 않는다.


@Configuration과 바이트코드 조작

@Bean
public MemberRepository memberRepository() {

 if (memoryMemberRepository가 이미 스프링 컨테이너에 등록되어 있으면?) {
 return 스프링 컨테이너에서 찾아서 반환;
 } else { //스프링 컨테이너에 없으면
 기존 로직을 호출해서 MemoryMemberRepository를 생성하고 스프링 컨테이너에 등록
 return 반환
 }
}