묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
@Configuration 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이전 싱글톤 방식의 주의점 강의 질문 답변 중에TestConfig에서 @Configuration이 빠져도 싱글톤으로 관리되는 이유가 AnnotationConfigApplicationContext(TestConfig.class)로 스프링 컨테이너에 빈을 직접 등록해서라고 하셨는데 이번 강의에서도 AnnotationConfigApplicationContext(AppConfig.class)로 직점 등록하는데 AppConfig에서 @Configuration을 빼고 테스트 코드를 돌리면 memberRepository가 세 번 호출되는 이유가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.출력은 나오는 것 같은데 다음과 같은 오류가 발생합니다.policyMap = {fixDiscountPolicy=hello.core.discount.FixDiscountPolicy@6995bf68, rateDiscountPolicy=hello.core.discount.RateDiscountPolicy@5143c662}policies = [hello.core.discount.FixDiscountPolicy@6995bf68, hello.core.discount.RateDiscountPolicy@5143c662]20:43:46.722 [main] WARN org.springframework.context.annotation.AnnotationConfigApplicationContext -- Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\spring project\core\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 single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicyorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\spring project\core\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 single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicyat org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)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:325)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624)at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:93)at hello.core.Autowired.allbean.AllBeanTest.findAllBean(AllBeanTest.java:17)at java.base/java.lang.reflect.Method.invoke(Method.java:578)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.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicyat 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:907)at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785)
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Scanner 훈련 문제와 풀이3
사용자로부터 이름과 나이를 반복해서 입력받고, 입력받은 이름과 나이를 출력하는 프로그램 작성사용자가 종료를 입력하면 종료package scanner.ex; import java.util.Scanner; public class ScannerWhileEx1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(true) { System.out.print("이름을 입력하세요 (종료를 입력하면 종료): "); String name = scanner.nextLine(); System.out.print("나이를 입력하세요: "); int age = scanner.nextInt(); System.out.println("입력한 이름: " + name + ", 나이: " + age); if(name.equals("종료")) { System.out.println("프로그램을 종료합니다."); break; } } } }첫번째는 잘 실행되는데 2번째 실행될 때 종료를 입력하면 오류가 발생하는데 왜 오류가 발생하는지 모르겠어요
-
해결됨김영한의 실전 자바 - 기본편
강의듣다가 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.질문1.method2(Data data2)를 해주셨는데 괄호 안에 의미가Data라는 클래스의 변수값 data2를 임의로 지정해준건가요? 질문2.method1 에서 Data data1 = new Data(10) 해서 data1이라는 인스턴스를 생성해서 method2를 만들떄 method2(Data data2)를 만들 수 있는건가요?
-
해결됨스프링 핵심 원리 - 기본편
gradle dependencies library 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]build.gradel에 web 라이브러리 추가하고 External Libraries에도 web관련 라이브러리들이 잘 추가가 되었는데 오른쪽 Gradle에 dependencies library에 빨간줄은 왜 생기는 걸까요??
-
미해결김영한의 실전 자바 - 기본편
선생님 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]ShoppingCart 클래스에서 Item[] 배열 items를 만들어도Item 클래스의 멤버변수를 사용할수있나요?보통 ITEM item = new Item(); 을 사용해야 해당 ITEM클래스의 멤버변수를 사용할수있는 것 아닌가요?
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔 대상인 @Configuration에 대해서
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. @Configuration도 컴포넌트 스캔 대상인데 , 제가 궁금한건 교재에 @Configuration 부가기능으로 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다. 이 부분입니다. 싱글톤은 모든 애노테이션에서 보장하는거 아닌가요? 교재만 보면 Configuration만 싱글톤은 지원하는 것 처럼 적혀져 있어서요. 싱글톤은 @Controller , @Repository , @Component , @Configuration , @Service 등 모든 애노테이션에서 보장하는건줄알았습니다.
-
해결됨김영한의 실전 자바 - 기본편
다형성 다운캐스팅은 왜 하는건가요?
10강 다형성에서 다운캐스팅에 대해 배웠습니다.강의에서도 왜 이렇게 번거롭게 써야되는지는 다음에 다형성 활용에 들어가면 알게된다고 하셔서 일단 그렇구나 하고 학습을 했습니다.그런데 다형성 활용에 들어가서도 다형성 참조를 이용한 방법과 인터페이스를 활용한 방법등은 나오지만 "그래서 캐스팅은 대체 왜 하는건데?" 에 대한 해답을 모르겠습니다.활용편에서도 캐스팅을 사용하는 내용은 없었구요.다운 캐스팅은 대체 어떤 상황에서 사용하는건지가 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
LogeDemoController 클래스의 @RequestMapping 어노테이션의 기능이 무엇인가요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@RequestMapping어노테이션의 기능과 안에 파라미터로 적용한 log-demo가 무엇인지 궁금합니다.
-
해결됨김영한의 실전 자바 - 기본편
인터페이스 관련하여 질문있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 인터페이스와 관련해서 궁금한 게 있어 질문드립니다.Eatable(인터페이스)Fruit(Eatable의 구현체)Apple과 Grape(Fruit 자손)다음과 같은 경우에서 Apple과 Grape는 Eatable을 구현하지 않아도 되나요??
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
안녕하세요 강의 하실때 쓰시는 pdf파일 질문입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]혹시 영한선생님이 꾸미시는 템플릿(?) 은 어떤걸 사용하셔서 만드시는걸까요? pdf파일보면 정리가 너무잘 되어있어서 저도 정리할때 사용하고 싶습니다 !
-
미해결김영한의 실전 자바 - 기본편
인텔리제이
자바 인텔리제이에서 분명 전 다른 패키지에 클래스를 만들고 다른 complie 했는데, 이전 다른 패키지에서 연습한 코드에서 에러가 났다고 뜨면서 코드 실행이 안되는데, 이럴때 유용한 방법이 있나요?
-
미해결김영한의 실전 자바 - 기본편
메서드 영역
여기 이 두 표현이 모순적인 것 같은데, 인스턴스 안에 메서드를 가지는게 맞나요? 어떤 의미에서 각각의 인스턴스가 '내부' 에 메서드를 가진다고 표현되어 있는건지 이해가 잘 안돼요
-
미해결스프링 핵심 원리 - 기본편
강의 내용에 나오는 부분을 추가 학습하고 싶은데 어떤 강의를 들어야 할까요?
쓰레드에 관한 개념을 서칭하는데 한계가 있어, 멀티 쓰레드 관련하여 강의를 듣고싶습니다.스프링 로드맵을 따라가고 있는데 이에 대한 설명이 나오는 부분이 있을까요?아니면 김영한 강사님의 자바 강의에 따로 설명이 되어있다면 어떤 강의인지 알려주셨으면 좋겠습니다 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
해당 클래스 빈 조회 방법
스프링 컨테이너는 생성자에 클래스 정보를 받습니다. 여기에 클래스 정보를 넘기면 해당 클래스(SingletonBean)가 스프링 빈으로 자동 등록됩니다.여기서 등록된 빈을 조회하려고 하는데 저렇게 name을 singletonBean으로 조회하면 등록된 빈을 찾을 수 없다고 오류가 납니다. 빈 이름으로 조회하고 싶은데 무엇으로 조회해야하나요?
-
미해결스프링 핵심 원리 - 기본편
통합 테스트를 돌리면 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 영한님 수업을 따라가면서 전체테스트를 돌릴때 CoreApplicationTest의contextLoads()에서 java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@46963479 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@208e9ef6, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@34448e6c, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7dc51783, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@3a43d133, org.springframework.boot.test.context.SpringBootTestAnnotation@1b8b1ee9], 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:1708)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:1596)at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\SpringStudy\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,memberRepositoryat org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1354)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959)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:552)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,memberRepositoryat 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:907)at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785)... 41 more오류가 발생하였습니다. 해결하는법을 찾지 못해 넘기고 다음 동영상 수업을 들으면서 2분29초 부분의 고의적으로FixDiscountPolicy클래스도 @Component를 등록하여 오류를 발생시킨 뒤 OrderServiceImpl클레스의 생성자에서 ratediscountPolicy로 변경하면 오류가 사라진다는 설명을 듣고 따라해도 오류가 발생되어 해결을 하지 못하고 있습니다. 어떻게 해야하나요?
-
해결됨스프링 핵심 원리 - 기본편
[섹션 7-5] 같은 타입의 빈이 2개일 때 문제
[문제 상황]이전에는 컴포넌트 스캔의 대상으로 RateDiscountPolicy 만 등록해줬지만, FixDisCountPolicy에 @Component를 추가해서 컴포넌트 스캔의 대상으로 만들어줬습니다.그래서 같은 타입이 2개 이상일 때 @Autowired를 사용하면 오류가 발생해서 필드명을 빈 이름으로 변경하는 방법을 쓰기 위해 OrderServiceImpl의 코드를 아래와 같이 수정했습니다.OrderServiceImpl의 코드@Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; public OrderServiceImpl(MemberRepository memberRepository,DiscountPolicy rateDiscountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = rateDiscountPolicy; } 그리고 나서 아래의 테스트를 진행한 결과 ... AutoAppConfigTest public class AutoAppConfigTest { @Test @DisplayName("컴포넌트 스캔해서 스프링 빈 등록하기") void basicScan(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); MemberService memberService = ac.getBean(MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); } } AutoAppConfigTest 뿐만 아니라 CoreApplicationTests도 오류가 발생했습니다. 그리고 각각의 오류 메세지는 다음과 같습니다. AutoAppConfigTest 오류메세지 org.springframework.beans.factory.UnsatisfiedDependencyException:Error creating bean with name 'orderServiceImpl' defined in file [...\hello\core\order\OrderServiceImpl.class]:Unsatisfied dependency expressed through constructor parameter 1:No qualifying bean of type 'hello.core.discount.DiscountPolicy' available:expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy CoreApplicationTests 오류메세지 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException:Error creating bean with name 'memberServiceImpl' defined in file :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 OrderServiceImpl 의 코드에서 rateDiscountPolicy로 코드를 수정했음에도 왜 빈을 구분 할 수 없다는 오류가 발생한 것이고 , CoreApplicationTests는 왜 오류가 발생한 것 일까요? 참고로 @Qualifier과 @Primary 를 사용하면 AutoAppConfigTest 는 성공하고CoreApplicationTests만 실패합니다 !! 아래는 CoreApplicationTests만 실패시 오류 메세지 입니다. Caused 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 [질문 사항] @Autowired 매칭을 할 때 필드명, 파라미터 명으로 매칭 되어야하는데 왜 이름을 바꿨는데도 매칭이 안될까요?? AutoAppConfig의 오류는 Discount 타입을 임의로 두 개 설정해줘서 발생한 것이지만 CoreApplicationTests는 왜 오류가 발생한 걸까요?제 생각엔 수동으로 빈을 등록해주는 코드가 실행돼서 수동 빈들이 등록된 것같은데AutoAppConfig 클래스에서 @Configuration 어노테이션이 있으면 빈으로 등록되지 않게 필터도 설정했고, 테스트를 진행하며 작성한 코드도 모두 지워줬는데 왜 memberRepository가 빈으로 등록 되었을 까요?
-
해결됨스프링 핵심 원리 - 기본편
MemberApp과 AppConfig 분리 이유 질문
1.AppConfig와 MeberApp를 분리한 이유를 잘 모르겠습니다. MemberApp에서 MemberService의 구현체 확인이 안되고 확인하려면 다시 AppConfig를 열어야하는데, 분리한 이유가 있나요?(예제 코드이다 보니깐 AppConfig의 장점이 와닿지가 않네요..현재로선 득보다 실이 더 큰 느낌이 들어요)2. MemberApp의 역할의 경계를 어디까지 잡는지 잘 모르겠습니다.
-
미해결김영한의 실전 자바 - 기본편
자바 클래스 배열과 C/C++의 이중포인터
강사님! 클래스 배열을 힙메모리에 할당하고, 할당된 힙 영역의 클래스배열 각각의 인덱스가 객체를 가리키는 것은C++에서 힙영역의 클래스 배열을 가리키는 이중포인터힙 영역에서 생성된 클래스 배열에서 각각의 인덱스는 객체를 가리키는 단일포인터로 저는 이해를 했는데 맞을까요?
-
해결됨스프링 핵심 원리 - 기본편
ApplicationContext 필드주입 질문입니다
applicationContext를 필드 주입 받는 부분입니다ApplicationContext가 컨테이너 라고 알고있는데 맞나요?그러면 ApplicationContext 컨테이너에 PrototypeBean이 등록되어야 getBean(PrototypeBean.class) 를 할 수 있는 거 아닌가요? PrototypeBean을 빈으로 등록하지 않았는데 가능한 이유가 궁금합니다. 혹시 아래 부분에서 PrototypeBean이 등록되는 건가요? 동작원리(순서)가 궁금합니다 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class ,PrototypeBean.class);