월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 핵심 원리 - 기본편
싱글톤 컨테이너 - @Configuration과 싱글톤 강의 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.싱글톤 컨테이너 - @Configuration과 싱글톤 강의에서 System.out.println("memberService -> memberRepository = " + memberRepository1); System.out.println("orderservice -> memberRepository = " + memberRepository2); System.out.println("memberRepository = " + memberRepository)이렇게 출력하면 전부 같은 memberRepository가 출력되야되는데 저는 전부 다른 memberRepository가 출력 됩니다. 이유를 모르겠습니다.
- 미해결스프링 핵심 원리 - 기본편
servlet/jsp 사전학습
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]servlet/jsp 사전학습 없이 이 강의를 들어도 될까요?
- 미해결스프링 핵심 원리 - 기본편
OrderServiceTest에서의 getDiscountPrice()오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]getDiscountPrice부분에서 자꾸 오류가 납니다 ㅜㅜOrder패키지에 있는 클래스와 인터페이스 모두 학습자료와 동일하게 코드 작성하였습니다.어느 부분이 문제인지, 어떻게 고쳐야 할지 모르겠습니다 ㅜㅜ참고로 alt+enter로 문제해결하려고 해보았으나, getDiscountPrice를 toString으로 바꾸라고 나옵니다 .. ㅜㅜ
- 미해결스프링 핵심 원리 - 기본편
setter 주입 시의 생성자
클래스에 생성자가 단 1개 존재하는 경우 @Autowired를 생략할 수 있다고 하셨는데, 이는 생성자 주입을 하는 경우에만 해당하는걸까요? setter 주입을 하기 위해 OrderServiceImpl에 setter를 정의하고 각 setter에 @Autowired를 붙였다면, 이때는 생성자 주입이 아닌 setter 주입이 이뤄지는 걸까요? 제가 추가적으로 OrderServiceImpl의 생성자에 출력문을 두었더니 memberRepository에 스프링 컨테이너에 존재하는 MemoryMemberRepository 객체의 주소값이 들어왔습니다... 생성자 주입도 이뤄지고 setter 주입도 이뤄지는 건가요...?public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { System.out.println("OrderServiceImpl.OrderServiceImpl"); System.out.println("memberRepository = " + memberRepository); this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; }
- 미해결스프링 핵심 원리 - 기본편
수동 빈 등록 vs 수동 빈 등록
수동 빈 등록 vs 수동 빈 등록에 대해 다루시지 않았다는 점이 궁금해서 질문드립니다. 제가 생각한 이유는 다음과 같은데, 실무 경험이 없어서 오류가 있을 것 같은데 오류 알려주시면 감사하겠습니다. 보통 애플리케이션의 설정 클래스는 1개 만들고, 이 클래스 내에서 여러 메서드(빈 등록 메서드)를 정의합니다. 중복되는 이름을 가진 메서드(= 빈의 이름이 중복됨)를 정의하면 자바 언어 차원에서 메서드 중복 정의되었다고 컴파일 오류로 알려주기 때문에 빈 이름(= 메서드 이름)을 중복 정의할 일이 없기 때문입니다.그런데, 생각해보면 @Bean도 name 옵션을 통해 빈 이름을 변경할 수 있고, 그렇다면 수동 빈 등록 시에도 빈 이름 중복 문제가 발생하는데 수동 빈 등록 vs 수동 빈 등록에 대해 다루시지 않는 이유가 무엇인가요? 혹시 자동 빈 등록보다 수동 빈 등록을 사용할 일이 적어서 그러한 것인가요?
- 해결됨스프링 핵심 원리 - 기본편
프로토타입 빈과 스프링 컨테이너
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 프로토타입 빈 관련 궁금한 게 있습니다!프로토타입 빈 같은 경우 스프링 컨테이너가 프로토타입 빈 요청을 받으면 생성하고반환만 하지 관리를 하는 게 아니기 때문에 @PostConstruct 애노테이션이 붙은 초기화 메서드는 동작을 하지만 @PreDestroy 가 붙은 소멸 메서드는 동작을 안 하는 걸로 알고 있습니다.하지만 싱글톤 빈에 의존관계가 주입되어 있는 프로토타입 빈은 스프링 컨테이너가 싱글톤 빈을 관리하는 것처럼 주입된 프로토타입 빈 또한 관리를 하고 관련 요청에 대해서 인스턴스를 반환하니까 싱글톤 빈에서 사용하는 프로토타입 빈 관련 동작도 가능하다고 생각하는데 왜 컨테이너를 종료해도 프로토타입 빈의 소멸 메서드는 동작을 안 할까요?
- 미해결스프링 핵심 원리 - 기본편
스프링 빈 자동 등록 방식에서의 @Configuration
(@Bean을 통해 스프링 빈을 수동 등록하는 방식이 아닌) 컴포넌트 스캔을 통해 자동 등록하는 방식을 사용할 때도 @Configuration이 붙은 클래스에 CGLIB가 적용되나요?컴포넌트 스캔 방식을 사용하는 AutoAppConfig 클래스 내부에는 아무런 코드도 존재하지 않고, 그렇다면 AutoAppConfig@CGLIB에서 오버라이딩할 메서드가 존재하지 않습니다. 기존에는 오버라이딩된 메서드 내에 싱글톤을 보장하는 코드가 담겨 있었는데, 이 방식은 메서드가 아닌 클래스 단위로 스프링 빈을 등록하므로 CGLIB를 적용할 필요가 없어 보입니다.
- 미해결스프링 핵심 원리 - 기본편
빈 등록과 의존관계 주입 순서
스프링 빈과 의존관계 주입의 순서에 대해 질문드리고자 합니다. @ComponentScan에 의해 스프링 빈을 등록하고, @Autowired를 통해 의존관계 자동 주입이 이뤄진다고 하셨습니다. 그런데, MemberServiceImpl 객체가 생성되기 위해서는 우선 의존관계 주입이 이뤄져야 합니다(생성자 호출). 순서를 따지자면 @Autowired에 의해 의존관계 자동 주입 -> 객체 생성 -> 스프링 빈으로 등록이라고 생각하는데요. (1) 스프링 빈 등록 (2) 의존관계 주입이라는 두 과정은 순서가 없이 섞여서 진행되는 것인지, MemoryMemberRepository와 RateDiscountPolicy와 같이 의존관계 주입이 필요없는 모든 빈을 등록하고 이후에 의존관계 주입이 필요한 클래스에 대해 의존관계 주입과 스프링 빈 등록이 섞여서 진행되는 것인지, 스프링 빈 등록과 의존관계 주입의 순서를 따지는게 큰 의미가 없는 것인지에 대해 여쭤보고자 합니다. 이전 강의에서 두 과정이 순서대로 일어난다? 섞여서 일어난다? 라는 강의를 들었던 것 같은데 이 부분이 헷갈려서 질문드립니다.
- 미해결스프링 핵심 원리 - 기본편
메서드 뿐만 아니라 클래스 자체를 스프링 빈으로 등록 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 섹션 5의 "컴포넌트 스캔과 의존관계 자동 주입 시작하기" 강의 듣다가 궁금증이 생겨서 글 남깁니다.이전 강의들에서 @Configuration 이 붙은 클래스를 구성 정보로 등록하고,해당 클래스 내부의 @Bean 이라는 애너테이션이 붙은 메서드들을 스프링 빈에 등록한다고 이해했습니다. 근데, 구성 정보로서 등록할 클래스 앞에 @ComponentScan 애너테이션을 붙이고,스프링 빈으로 등록할 클래스 앞에 @Component 애너테이션을 붙이는 부분이 잘 이해가 되지 않습니다. 스프링 컨테이너에 빈으로 등록할 수 있는 건 메서드(@Bean 처럼) 뿐만 아니라,클래스 자체(@Component) 를 통째로 빈으로 등록할 수 있는건가요? 만약 클래스 자체를 통째로 빈으로 등록할 수 있다는 말씀이시라면,@Component 애너테이션이 붙은 클래스 내부에 있는 모든 메서드들과 변수들을 자동으로 빈으로 등록한다는 것이고,이것들을 .getBean() 메서드를 통해 조회할 수 있다는 것인가요?
- 해결됨스프링 핵심 원리 - 기본편
5분대부터 말씀하신 테스트에 대한 질문
안녕하세요 영한님. 강의 너무 잘 듣고 있습니다.다름이 아니라 강의 듣다가 테스트 코드의 중요성을 말씀해주셨는데, 궁금한 점이 있어서요 단위 테스트를 작성하는 것이 좋다단위 테스트는 스프링이나 DB를 활용하는 것이 아니다이렇다면, 단위 테스트할 때는 Fake 객체를 사용해서 단위테스트를 작성해야 하는 걸까요? 인터페이스로 역할과 구현이 분리된 상태에서 MemberRepository의 구현체를 프로덕션에서 사용하는 MemoryMemberRepository, 테스트 환경에서 사용할 FakeMemberRepository로 분리해서 사용하는 걸까? 하는 궁금함이 있어 여쭈어봅니다 항상 좋은 강의 감사합니다!!
- 미해결스프링 핵심 원리 - 기본편
10분쯤 에러....
뭐가 문제일까요?? 해결하고 집에 가고 싶어요ㅠㅠㅠ
- 미해결스프링 핵심 원리 - 기본편
다양한 의존관계 주입 방법에서 AutoAppConfigTest를 실행하면,
왜 OrderServiceImpl 가 실행되나요?? memberService가 실행되고 끝 아닌가요?
- 해결됨스프링 핵심 원리 - 기본편
강의 7분,9분에서 출력이 안돼요
김영한 강사님처럼 system.out.println 결과가 안 뜹니다
- 미해결스프링 핵심 원리 - 기본편
static 영역 및 객체 생성
강의자료에 'static 영역에 객체 instance를 미리 하나 생성해서 올려둔다.'라고 되어있는데요. heap 영역에 SingletonService 인스턴스를 생성하고 이 인스턴스에 주소값이 static 영역에 저장된다는 말이 맞을까요?? static 변수라도 객체 인스턴스는 heap 영역에 저장되는게 맞을까요?
- 해결됨스프링 핵심 원리 - 기본편
컴포넌트 스캔 getBean()에 관한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.각 구현 클래스에 @Component 표기하고 테스트 코트에서 AutoappConfig를 설정 정보로 입력하는 것까지는 이해가 갑니다. 다만 , @Bean과 다르게 @Component는 각 구현클래스에 작성했는데 getBean에 왜 (MemberService.class)가 들어가고 검증코드 또한 MemberService.class인지 이해가 가지 않습니다.
- 미해결스프링 핵심 원리 - 기본편
13분 에러나요......
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\songsyl\Desktop\study\core\out\production\classes\Hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'Hello.core.discount.DiscountPolicy' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}원인이 뭘까요?
- 미해결스프링 핵심 원리 - 기본편
Eclipse에서 public @Bean method 창
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.Eclipse를 사용 중인데, public method를 Bean으로 지정해줄 때마다 이런 창이 뜨면서 public을 지워도 된다는데, 그 지워도 되는 정확한 이유가 궁금합니다. 제가 생각하기로는 빈 생성 시의 디폴트값이 public이라 그런 것 같은데 이게 맞는지도 궁금합니다.감사합니다!
- 해결됨스프링 핵심 원리 - 기본편
Bean Configuration / Dependency Injection 에 관해 질문드립니다 :)
안녕하세요 영한님,Dependency Injection에 관해서 궁금한점이 있어 질문드립니다. 제가 실무중이나 code review중에 아래같은 코드를 자주봤는데 지금까지는 그냥 그런가보다 하고 넘어갔지만, 그래도 강사님께 좀 자세한 mechanism을 들으면 좀더 개념확립에 도움이 될것같아서 질문드립니다.//SecretVault.java @Component public class SecretVault { private final String secret = "Secret123"; public SecretVault() { } public String getSecret() { return this.secret; } } //SecretService.java public class SecretService { private SecretVault vault; public SecretService() { } public SecretService(SecretVault vault) { super(); this.vault = vault; } public String revealSecret() { return vault.getSecret(); } } //CoreApplication.java @SpringBootApplication public class CoreApplication { public static void main(String[] args) { SpringApplication.run(CoreApplication.class, args); } @Bean SecretService secretService(SecretVault vault) { return new SecretService(vault); } } //테스트 클래스 //JUnit Test Pass //MiscTest.java @SpringBootTest public class MiscTest { @Autowired ApplicationContext ac; @Test void testSecret() { SecretService service = (SecretService) ac.getBean("secretService"); Assertions.assertEquals(service.revealSecret(), "Secret123"); } }테스트 결과, secretService bean안에 vault 필드가 제대로 주입되어있습니다. 빈 생성하는 method parameter가 spring이 관리하는 bean이면 저절로 찾아서 넣어주나요? 저는 method parameter bean이 같은 configuration 클래스 안에서 생성되었을 경우에만 가능한걸로 알았는데, 위 예제의 dependency injection이 어떻게 일어나는지 궁금합니다.
- 해결됨스프링 핵심 원리 - 기본편
테스트 오류 관련 질문
java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@6c302a1d testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@b5cc23a, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@758f4f03, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@9cd25ff, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@70ab80e3, org.springframework.boot.test.context.SpringBootTestAnnotation@699a8e45], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\Users\uniti\OneDrive\바탕 화면\Developer\Back End\Spring\core\basic\core\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1355) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1192) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:962) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 17 moreCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1420) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 41 more CoreApplicationTests 에서 위와 같이 오류가 납니다
- 해결됨스프링 핵심 원리 - 기본편
MemberApp, OrderApp에 의해 각각 두개의 스프링 컨테이너가 생성됐다 생각하면 될까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.전 섹터의 마지막강의 "스프링으로 전환하기"에서 스프링을 이용해 DI를 적용하면서MemberApp, OrderApp에 각각 ApplicationContext ac = new ... 를 사용했는데 이떄,MemberApp, OrderApp클래스 각각 서로 다른 스프링 컨테이너를 띄었다 생각하면될까요?