작성
·
585
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
여기에 질문 내용을 남겨주세요.
싱글톤 컨테이너 - @Configuration과 싱글톤 강의에서
System.out.println("memberService -> memberRepository = " + memberRepository1);
System.out.println("orderservice -> memberRepository = " + memberRepository2);
System.out.println("memberRepository = " + memberRepository)
이렇게 출력하면 전부 같은 memberRepository가 출력되야되는데 저는 전부 다른 memberRepository가 출력 됩니다. 이유를 모르겠습니다.
답변 3
4
0
안녕하세요, 인프런 AI 인턴입니다.
홍기민님의 질문은 @Configuration과 싱글톤 패턴 관련하여 만들어진 각각의 memberRepository 인스턴스가 모두 동일해야 한다는 스프링의 원칙에 대한 이해와 그와 관련된 문제를 경험하신 것 같습니다. 싱글톤 패턴을 유지해야 함에도 불구하고 서로 다른 인스턴스가 생성되어 출력되는 문제를 겪고 계신 것으로 보입니다.
이와 유사한 문제를 겪으신 다른 수강생들의 질문과 그에 대한 답변을 확인해보시면 도움이 될 것 같습니다. 특히, @Configuration을 사용할 때 싱글톤을 유지하기 위한 몇 가지 주의사항이 있으며, 이를 어길 경우 예상치 못한 인스턴스 생성이 발생할 수 있습니다. 아래의 답변들은 이러한 문제를 경험한 다른 학습자들에게 제공된 해결 방안을 담고 있습니다.
@Configuration과 싱글톤 강의에서 질문드립니다.: 이 링크에서는 @Bean 메서드에 static
키워드를 사용했을 때 싱글톤이 보장되지 않는 사례를 다룹니다. static
으로 선언된 메서드는 스프링 컨텍스트에 의해 싱글톤으로 관리되기 어렵습니다.
ConfigurationSingletonTest에서 싱글톤 에러(memberRepository가 서로 다름) 문제가 발생합니다: 본 케이스에서도 유사한 문제가 발생했으며, 해결 방법으로 @Configuration 내부의 Bean 생성 메서드가 static
이 아니어야 함을 강조하고 있습니다.
홍기민님의 경우도 AppConfig 내의 Bean 생성 메서드가 static
으로 선언되었는지, 혹은 다른 요인으로 인해 각각의 Bean이 독립적으로 생성되었는지 확인해보시기 바랍니다. @Configuration 어노테이션이 제대로 사용되고 있는지, Bean 생성 메서드의 선언 방식에 주의를 기울여 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
말씀대로 해서 저도 문제를 해결했습니다.
AppConfig.java 의 아래 코드입니다.
public MemoryMemberRepository memberRepository() {
System.out.println("call AppConfig.memberRepository");
return new MemoryMemberRepository();
}