inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

인텔리제이

미해결

김영한의 실전 자바 - 기본편

자바 인텔리제이에서 분명 전 다른 패키지에 클래스를 만들고 다른 complie 했는데, 이전 다른 패키지에서 연습한 코드에서 에러가 났다고 뜨면서 코드 실행이 안되는데, 이럴때 유용한 방법이 있나요?

  • java
  • 객체지향
ghuhan18 댓글 1 좋아요 0 조회수 224

메서드 영역

미해결

김영한의 실전 자바 - 기본편

여기 이 두 표현이 모순적인 것 같은데, 인스턴스 안에 메서드를 가지는게 맞나요? 어떤 의미에서 각각의 인스턴스가 '내부' 에 메서드를 가진다고 표현되어 있는건지 이해가 잘 안돼요

  • java
  • 객체지향
ghuhan18 댓글 1 좋아요 0 조회수 230

강의 내용에 나오는 부분을 추가 학습하고 싶은데 어떤 강의를 들어야 할까요?

미해결

스프링 핵심 원리 - 기본편

쓰레드에 관한 개념을 서칭하는데 한계가 있어, 멀티 쓰레드 관련하여 강의를 듣고싶습니다. 스프링 로드맵을 따라가고 있는데 이에 대한 설명이 나오는 부분이 있을까요? 아니면 김영한 강사님의 자바 강의에 따로 설명이 되어있다면 어떤 강의인지 알려주셨으면 좋겠습니다 ㅠㅠ

  • spring
  • 객체지향
홍의주 댓글 1 좋아요 0 조회수 195

해당 클래스 빈 조회 방법

미해결

스프링 핵심 원리 - 기본편

스프링 컨테이너는 생성자에 클래스 정보를 받습니다. 여기에 클래스 정보를 넘기면 해당 클래스(SingletonBean)가 스프링 빈으로 자동 등록됩니다.여기서 등록된 빈을 조회하려고 하는데 저렇게 name을 singletonBean으로 조회하면 등록된 빈을 찾을 수 없다고 오류가 납니다. 빈 이름으로 조회하고 싶은데 무엇으로 조회해야하나요?

  • spring
  • 객체지향
  • 스프링핵심원리-기본편
0715ksj 댓글 1 좋아요 0 조회수 235

통합 테스트를 돌리면 오류가 발생합니다.

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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,memberRepository at 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 more 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 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:907) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785) ... 41 more 오류가 발생하였습니다. 해결하는법을 찾지 못해 넘기고 다음 동영상 수업을 들으면서 2분29초 부분의 고의적으로 FixDiscountPolicy클래스도 @Component를 등록하여 오류를 발생시킨 뒤 OrderServiceImpl클레스의 생성자에서 ratediscountPolicy로 변경하면 오류가 사라진다는 설명을 듣고 따라해도 오류가 발생되어 해결을 하지 못하고 있습니다. 어떻게 해야하나요?

  • spring
  • 객체지향
양치잘하기 댓글 1 좋아요 0 조회수 659

[섹션 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가 빈으로 등록 되었을 까요?

  • spring
  • 객체지향
오리너구리 댓글 1 좋아요 1 조회수 240

MemberApp과 AppConfig 분리 이유 질문

해결됨

스프링 핵심 원리 - 기본편

1.AppConfig와 MeberApp를 분리한 이유를 잘 모르겠습니다. MemberApp에서 MemberService의 구현체 확인이 안되고 확인하려면 다시 AppConfig를 열어야하는데, 분리한 이유가 있나요? (예제 코드이다 보니깐 AppConfig의 장점이 와닿지가 않네요.. 현재로선 득보다 실이 더 큰 느낌이 들어요) 2. MemberApp의 역할의 경계를 어디까지 잡는지 잘 모르겠습니다.

  • spring
  • 객체지향
donkey 댓글 1 좋아요 0 조회수 407

자바 클래스 배열과 C/C++의 이중포인터

미해결

김영한의 실전 자바 - 기본편

강사님! 클래스 배열을 힙메모리에 할당하고, 할당된 힙 영역의 클래스배열 각각의 인덱스가 객체를 가리키는 것은 C++에서 힙영역의 클래스 배열을 가리키는 이중포인터 힙 영역에서 생성된 클래스 배열에서 각각의 인덱스는 객체를 가리키는 단일포인터로 저는 이해를 했는데 맞을까요?

  • java
  • 객체지향
Pass 댓글 1 좋아요 0 조회수 384

ApplicationContext 필드주입 질문입니다

해결됨

스프링 핵심 원리 - 기본편

applicationContext를 필드 주입 받는 부분입니다 ApplicationContext가 컨테이너 라고 알고있는데 맞나요? 그러면 ApplicationContext 컨테이너에 PrototypeBean이 등록되어야 getBean(PrototypeBean.class) 를 할 수 있는 거 아닌가요? PrototypeBean을 빈으로 등록하지 않았는데 가능한 이유가 궁금합니다. 혹시 아래 부분에서 PrototypeBean이 등록되는 건가요? 동작원리(순서)가 궁금합니다 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class ,PrototypeBean.class);

  • spring
  • 객체지향
kong 댓글 1 좋아요 0 조회수 279

List 인터페이스 질문

미해결

스프링 핵심 원리 - 기본편

강의를 다듣고 궁금한점이 생겼는데요. List와 ArrayList도 결국 인터페이스와 구현체 관계인데, 자료형으로 주로 사용될지라도 실상은 memberRepository처럼 데이터를 넣고 조작하는건 똑같은데, 코드에 List<Integer> list = new ArrayList<>();가 추가 되면, List<Integer> list; 처럼 바꿔줘야 하나요? 2.이런 인터페이스들도 클래스 다이어그램에 포함되는지도 궁금합니다. 1번과 비슷한 내용인데, List도 추후에 배울 @Bean 처리를 하기도 하나요?

  • spring
  • 객체지향
donkey 댓글 1 좋아요 0 조회수 211

다형성에서 클라이언트가 의미하는게 무엇인지 궁금합니다.

미해결

김영한의 실전 자바 - 기본편

다형성의 본질은 클라이언트를 변경하지 않고, 서버의 구현한 기능을 유연하게 변경할 수 있다라고 하셨는데 여기서 말하는 클라이언트는 결국 Car와 같이 기본이 되는 인터페이스를 의미하는건가요?

  • java
  • 객체지향
이정빈 댓글 1 좋아요 0 조회수 244

객체의 생성과 초기화 분리

미해결

스프링 핵심 원리 - 기본편

강의에서 객체의 생성과 초기화를 분리하라고 하셨는데, NetworkClient networkClient = new NetworkClient(); 이 부분에서는 객체를 생성과 동시에 초기화 해주는 것인가요? (초기화: connect(), call() 이 맞나요?) 그럼 분리가 안된 것인가요? setUrl 은 초기화 하는 건가요 아니면 객체 생성과정으로 생각해야하나요? networkClient.setUrl("https://test.dev"); 강의에서 든 예제는 객체 생성과 초기화가 분리가 된 것인지, 분리가 안된 것인지 헷갈립니다. 분리가 되었다면 어떤식으로 분리가 되었는지, 아니라면 어느부분이 문제인지 궁금합니다.!

  • spring
  • 객체지향
kong 댓글 1 좋아요 0 조회수 444

contextLoads() 테스트 실패

해결됨

스프링 핵심 원리 - 기본편

CoreApplicationTests 속 contextLoads() 테스트를 실행하였는데 java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@3f9f71ff 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@35aea049, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@3b6ddd1d, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@2f217633, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@6fd83fc1, org.springframework.boot.test.context.SpringBootTestAnnotation@8daef27a], resourceBasePath = "src/main/webapp", 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.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130) 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\김승빈\Desktop\김 영 한\Spring_Core_Basic\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: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 more 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 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:907) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785) ... 41 more 이런 오류가 나면서 실패합니다. 왜 이런가요? 참고용으로 AutoAppConfig 와 AppConfig 코드 입니다. AutoAppConfig package hello.core.order; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) public class AutoAppConfig { /* @Bean(name = "memoryMemberRepository") public MemberRepository memberRepository() { return new MemoryMemberRepository(); } */ } AppConfig package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.member.MemoryMemberRepository; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { //@Bean memberService -> MemoryMemberRepository() //@Bean orderService -> MemoryMemberRepository() //call AppConfig.memberService //call AppConfig.memberRepository //call AppConfig.memberRepository //call AppConfig.memberService //call AppConfig.memberRepository //call AppConfig.memberService //call AppConfig.memberRepository //call AppConfig.memberService @Bean public MemberService memberService() { System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepository(); } @Bean public OrderService orderService() { System.out.println("call AppConfig.orderService"); return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public DiscountPolicy discountPolicy() { // return new FixDiscountPolicy(); return new RateDiscountPolicy(); } }

  • spring
  • 객체지향
김승빈 댓글 2 좋아요 0 조회수 594

R-value 참조에 대해서 질문이 있습니다.

해결됨

C개발자를 위한 최소한의 C++

r-value 참조에 대해서 질문이 있습니다. (02-rvalueRef 예제 강의 기준 r-value 참조 (임시 객체와 유효범위) 8분) 코드를 포인터를 볼 수 있게 조금 수정했습니다. int testFunc(int param) { int result = param * 2; std::cout << &result << std::endl; return result; } int&& result = testFunc(10); std::cout << result << "pointer: " << &result << std::endl; 임시 객체의 주소를 지우지 않고 가져다 쓰는것이라 하셔서 testFunc 함수의 return 하는 result 의 포인터를 확인 후 받는 result의 포인터가 같은지를 확인해 보았습니다. print된 2개의 result의 포인터 값이 다른 것을 확인했습니다. 혹시 임시 객체라는 것이 함수의 return result 값을 또 다른 포인터로 옮긴 뒤 받기 때문에 return result와 다르게 되는건가요?

  • c++
  • microsoft-windows
  • 객체지향
  • 디자인-패턴
날다람쥐 댓글 2 좋아요 0 조회수 391

스택 구조

미해결

김영한의 실전 자바 - 기본편

만약 method2() 가 method1() 내부에서가 아니라 제가 화살표 친 부분 즉, method1() 다음 줄에 emthod2(8) ; 이렇게 적혀 있으면 스택에는 아래서부터 main mehtod , method1, method2 순으로 쌓이는건가요? 근데 윗줄부터 실행하면 method1 이 method2 보다 우선적으로 실행하는거 아닌가요 ? 제가 아는 스택 구조라면 method2() , method1() , main method() 순으로 종료가 되어야 하는데, 제가 말한 식으로 있을때에는 성립하지 않는 것 같습니다.

  • java
  • 객체지향
ghuhan18 댓글 1 좋아요 0 조회수 254

자바 중급 강의 언제쯤..

미해결

김영한의 실전 자바 - 기본편

자바 중급 강의 언제나오나요..ㅠㅠ강의 다들었습니다.. 3월초에 일단 완성된 강의 만이라도 먼저 올려주시고 추가되는 강의 후에 넣어주실수없나요ㅠㅠ

  • java
  • 객체지향
플하 댓글 1 좋아요 0 조회수 645

퀴즈 13 질문

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

FileWriter fw = new FileWriter("saying.txt"); BufferedWriter bw = new BufferedWriter(fw); 복습 차원에서 파일 생성하고 작성 하는 것 까지 한번 해봤는데요. 위 부분에서 앞선 강의에선 윗줄과아랫줄을 합쳐서 BufferedWriter bw = new BufferedWriter(new FileWriter("saying.txt")); 이렇게 만들고 이것을 TryWithResources 방법으로 구현하는 방법을 배웠는데, TryWithResources방법이 기억이 안 나서 try { BufferedWriter bw = new BufferedWriter(new FileWriter("saying.txt")); bw.write("세 살 __ 여든까지 간다"); bw.newLine(); // . // . // . } catch (IOException e) { throw new RuntimeException(e); } 이렇게 전체를 트라이캐치 구문으로 묶어 버렸어요. 실행 해보니 파일에 글자가 아예 안 찍히더라고요. TryWithResources방법을 안 써도 글자는 찍힐 거라고 생각했는데 왜 안 찍히는 것일까요.

  • java
  • 객체지향
준호 댓글 1 좋아요 0 조회수 244

DiscountPolicy는 인터페이스인데 .class가 붙는 이유

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 1. code 일부분 ac.getBeansOfType(DiscountPolicy.class); 2. 궁금한점 DiscountPolicy는 인터페이스인데 .class가 붙는 이유가 메타데이터에 접근하기위해서 '.class'가 붙는것인가요?

  • spring
  • 객체지향
조준형 댓글 2 좋아요 0 조회수 426

빈 등록 초기화, 소멸 메서드

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 종료 메서드 추론에 대해서 강의해주실 때, @Bean 의 destoryMethod 의 기본값이 inferred 추론으로 등록되어 있는데, 이 추론 기능이 close, shutdown이라는 이름의 메서드를 자동 호출해준다. "직접 스프링 빈으로 등록하면, 종료 메서드는 따로 적어주지 않아도 잘 동작한다" 라는 말이 이해가 되지 않아서 질문을 남깁니다. 혹시 쉽게 설명이 가능할까요?

  • spring
  • 객체지향
dohj511 댓글 1 좋아요 0 조회수 336

@beforeEach 사용 여부에 따른 차이점

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @BeforeEach를 사용한 것과 사용하지 않은 것의 코드입니다. 현재 강의까지를 범위로 놓고 보았을 때 테스트 하는 부분이 join 하나밖에 없어서 큰 문제가 되진 않겠지만 스프링 입문에서도 설명하셨던 것과 같이 테스트를 계속 실행하면 그 데이터가 누적이 되면서 테스트 실패가 날 수 있기 때문에 @BeforeEach와 @AfterEach를 활용해야한다고 하셨었는데 그 이유 때문에 저렇게 쓰신 것이 맞을까요?

  • spring
  • 객체지향
피곤한개발자 댓글 1 좋아요 1 조회수 293

인기 태그

인프런 TOP Writers

주간 인기글