월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 핵심 원리 - 기본편
섹선5 [싱글톤 방식의 주의점] 질문
안녕하세요, 싱글톤 테스트 코드에서 OrderService, MemberService 인터페이스의 구체인 OrderServiceImpl과 MemberServiceImpl 클래스에서 각각 생성자로 주입되어져 있는 memberRepository 객체를 꺼내서 프린트해봤는데 서로 다른 객체라고 뜹니다 뭐가 문제일까요? 코드는 강의 교안과 일치합니다
- 미해결스프링 핵심 원리 - 기본편
혹시 이 강의에 서블릿도 포함되어있나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]서블릿과 스프링을 따로 공부안하고 진행해도 서블릿과 스프링을 이해할수있는 과정이 포함되어있나여?
- 미해결스프링 핵심 원리 - 기본편
섹션 4 <컨테이너에 등록된 모든 빈 조회> 질문
ApplicationContextInfoTest 클래스에서 질문이 있는데요 기존에는 스프링 컨테이너를 생성해주는 코드를ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 였는데 이번 강의에서는 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 로 사용하신 거에 대해서 ApplicationContext로 선언했을 때와 AnnotationConfigApplicationContext로 선언한 것의 차이점이 궁금합니다.
- 해결됨스프링 핵심 원리 - 기본편
request 스코프 예제 만들기에서 springboot starter web 구현 추가후 실행 실패
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]build.gradle문서에 web 라이브러리 추가 후 CoreApplication에서 main을 실행시키니 오류가 뜹니다.. 오류문장은 다음과 같습니다.Execution failed for task ':compileJava'.> Could not resolve all files for configuration ':compileClasspath'. > Could not find javax.inject:javax:inject. Required by: project :Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html 어떻게 해결하면 좋을까요?
- 미해결스프링 핵심 원리 - 기본편
프로젝트 오픈방법 질문
프로젝트 오픈시, build.gradle을 선택해서 여시는데 그러는 이유가 있는건가요?그냥 core폴더를 선택해서 여는 것이랑 차이가 있는건가요?
- 해결됨스프링 핵심 원리 - 기본편
[섹션 6] @Autowired 와 컨테이너 생성 순서
안녕하세요.섹션6에서 @Autowired에 대해서 공부하다가 잘 이해가 되지 않는 부분이 있어서 질문드립니다. 컨테이너는,스프링 컨테이너 생성스프링 컨테이너 내부의 빈 저장소에 빈 이름과 객체 등록설정 정보를 기반으로 빈 간의 의존관계 설정의 과정으로 생성된다고 [섹션 4]에서 학습하였습니다.이 과정에서 이해가 잘 되지 않는 것이 있습니다.@Component public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository; @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } } 빈 저장소에 빈 이름(memberServiceImpl)과 빈 객체를 등록하려면, 생성자를 호출해야 하지 않나요??생성자를 호출하려면 MemberRepository 타입의 빈을 찾아서 의존관계 주입을 해줘야 하는데, 이러면 컨테이너 생성 과정의 [2], [3]번이 동시에 실행되는 것이 아닌지 궁금합니다. memberServiceImpl 빈 등록-> 생성자 호출 필요-> 매개 변수 MemberRepository memberRepository 전달 필요-> memberRepository 빈을 전달함(의존 관계 주입) [순서 3]-> 객체 생성 완료 [순서 2] 제가 이해한 빈 등록 과정입니다.결국, 의존관계 주입과 빈 객체 등록은 동시에 이루어지는 것이 아닌지 궁금합니다.잘못된 부분이 있는지 알려주세요! 감사합니다.
- 미해결스프링 핵심 원리 - 기본편
스프링 메인 메서드 실행 오류
스프링 부트 메인 메서드 실행 시 해당 오류가 뜨는데어디 쪽을 확인해 봐야 할까요?... MemberServiceImpl, MemberRepository, MemoryMemberRepository에는 잘 못 된 부분이 없는 것 같아서요...
- 미해결스프링 핵심 원리 - 기본편
선생님 혹시 실전! 스프링 부트 이건 언제 출시 예정인가요?
선생님 혹시 실전! 스프링 부트 이건 언제 출시 예정인가요?올해 예정일까욤?
- 해결됨스프링 핵심 원리 - 기본편
No Scope registered for scope name 'request'
마지막 강의까지 다 라이브코딩 한 후 전체 테스트를 돌려봤는데 에러가 발생하네요.@Component @Scope(value="request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class MyLogger {오타도 없는데 뭐가 문제일까요?
- 미해결스프링 핵심 원리 - 기본편
basicScan 실행 시, NoUniqueBeanDefinitionException 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한쌤 따라서 @Autowired 필드명 방법을 사용했더니 다음과 같은 에러가 발생했습니다. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Program Files\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,rateDiscountPolicy 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.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:93) at hello.core.scan.AutoAppConfigTest.basicScan(AutoAppConfigTest.java:14) at java.base/java.lang.reflect.Method.invoke(Method.java:568) 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,rateDiscountPolicy 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) ... 17 more아래는 제 코드입니다.에러 내용으로만 봐서는 rateDiscountPolicy와 fixDiscountPolicy 때문에 빈이 2개 등록된다는 것 같은데.. @Autowired 필드명 방법이 그러한 문제를 해결하려는 건데 왜 에러가 날까요ㅠㅠ
- 해결됨스프링 핵심 원리 - 기본편
강의에서 21:36 쯤에
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한쌤께서 fieldInjectionTest 테스트 코드를 만드실 때, new OrderServiceImpl() 로 OrderServiceimpl 객체를 생성하잖아요? 여기서 해당 객체는 스프링 빈으로 등록된 OrderServiceImpl이 아닌 그냥 완전히 새로 생성된 자바 객체인 OrderServiceImpl 인거죠??
- 미해결스프링 핵심 원리 - 기본편
3분 30초 경 오류 해결 부분
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 오류 로그 Failed to load ApplicationContext for [MergedContextConfiguration@65ae095c 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@4ef37659, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@306cf3ea, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@52102734, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@4d910fd6, org.springframework.boot.test.context.SpringBootTestAnnotation@930cd593], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]강의의 3분 30초 경 오류 코드를 수정하는 순서에서의 AutoAppConfig클래스의 3줄을 주석처리 하는 부분을 처리 하였는데도 오류가 떠서 GPT에 검색을 해보니까 주석 처리를 했는데도 memoryMemberRepository Bean이 두개가 등록이 되어있다고 나옵니다.AutoAppCofig 코드package hello.core; 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("memoryMemberRepository") // MemberRepository memberRepository() { // return new MemoryMemberRepository(); // } } MemberServiceImpl 코드package hello.core.member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @Component public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; @Autowired // ac.getBean(MemberRepository.class) public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Override public void join(Member member) { memberRepository.save(member); } @Override public Member findMember(Long memberId) { return memberRepository.findById(memberId); } //테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; } }MemberService 코드package hello.core.member; public interface MemberService { void join(Member member); Member findMember(Long memberId); } MemoryMemberRepository 코드package hello.core.member; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; @Component public class MemoryMemberRepository implements MemberRepository{ private static Map<Long, Member> store = new HashMap<>(); @Override public void save(Member member) { store.put(member.getId(), member); } @Override public Member findById(Long memberId) { return store.get(memberId); } }
- 미해결스프링 핵심 원리 - 기본편
강의 3분 50초 classes=Configuration.class에 대한 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]해당 강의 3분 45~50초 경, 영한쌤께서 Configuration 어노테이션이 붙어있는 클래스를 제외시키기 위해 classes=Configuration.class 이러한 코드를 Filter에 적용하신 것을 확인했습니다. 그런데 AutoAppConfig 클래스도 @Configuration이 적용되어 있는 클래스가 아닌가요?? 해당 클래스는 어떤 과정으로 인해서 제외되지 않는지 궁금합니다! 감사합니다:-)
- 미해결스프링 핵심 원리 - 기본편
저는 콘솔창이 왜 이렇게 뜰까요ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이전부터 이랬는데 별 다른 문제 없이 강의를 들을 수 있어서 그냥 냅뒀습니다. 그런데 점점 이유가 궁금해지더군요ㅠㅠ 13:37 쯤 영한쌤은 테스트가 완료된 뒤 콘솔 출력창에 로그가 쭉 뜨는데, 저는 테스트가 완료되어도 빈 화면으로만 뜨네요..
- 해결됨스프링 핵심 원리 - 기본편
Nullpoint exception 문제 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]옵션처리 강의까지 강의를 잘 따라 가다가 모든 테스트 파일의 코드들을 실행시켰을때 2가지 오류가 납니다. 첫번째는 다음과 같은 nullpointexception이 뜹니다.두번째는 BeanNotOfRequiredTypeException오류가 발생합니다.어디를 어떻게 고치면 좋을까요?
- 미해결스프링 핵심 원리 - 기본편
문서 오타네요 disConnect -> disconnect
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
- 해결됨스프링 핵심 원리 - 기본편
OrderApp코드에서 new MemoryMemberRepository에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]OrderApp에서 appCofig.memberService()와 appCofing.orderService() 를 실행하고, memberService.join과 orderService.createOrder를 실행하는데memberService()에서 생성된 MemoryMemberRepository와 orderService()에서 생성된 MemoryMemberRepository가 둘 다 new로 다른 객체라고 생각이 되는데 어떻게 createOrder에서 아이디가 1L인 회원을 조회할 수 있는건가요?join된 메모리와 createOrder에서 하는findById를 실행하는 메모리는 다른 MemoryMemberRepository 객체 아닌가요?
- 미해결스프링 핵심 원리 - 기본편
강의에서 필드 주입 방식이 스프링 의존적이라고 하신 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]의존성 자동 주입의 방법 4가지 중 필드 주입의 방법만 스프링 의존적이라고 하시는 건가요? 아니면 @Autowired를 이용한 의존관계 자동주입 방법 4가지가 모두 스프링 의존적이라는 의미인가요?제 생각에는 필드 주입만 스프링 의존적이라는 게 좀 이해가 안가서요... 4가지 방법 모두 @Autowired 를 이용한 주입방법인데, 오직 필드 주입만 스프링 의존적이라서 단위 테스트가 불가능하다고 하시는건까요?+추가혹시 제가 이해한 내용이 맞을까요?!4가지 방법 모두 스프링 의존적인게 맞음. 그러나 다른 방법은 단위 테스트 시 의존관계가 안들어왔을 경우 내가 직접 넣어줄 수 있는데 필드 주입은 그럴 방법이 아예 없기 때문에 테스트를 꾸리는 것이 힘들어진다는 의미임.
- 미해결스프링 핵심 원리 - 기본편
수정자 주입으로 의존관계가 주입 안된 빈이 실행될 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수정자 주입을 통한 의존관계 주입 시, 해당 의존관계 빈이 컨테이너에 없더라도 예외가 발생하지 않고 실행된다고 하셨는데요.그러면 의존관계가 주입되지 않은 상태에서 실행이 됐고, 이후 의존관계가 없는 해당 빈을 사용하게 되면 런타임 에러가 발생하나요? 아니면 해당 타입의 추상체가 의존관계로 주입이 될까요?? 어떻게 동작하는지 궁금합니다. +추가혹시 제가 이해한 게 맞을까요?!4가지 방법 모두 스프링 의존적인게 맞음. 그러나 다른 방법은 단위 테스트 시 의존관계가 안들어왔을 경우 내가 직접 넣어줄 수 있는데 필드 주입은 그럴 방법이 아예 없기 때문에 테스트를 꾸리는 것이 힘들어진다는 의미임.
- 해결됨스프링 핵심 원리 - 기본편
특정 하위 타입으로 조회하기
<섹션 4. 스프링 컨테이너와 스프링 빈> 파트에서 질문 드리고 싶은게 있습니다.저와 비슷한 질문을 하신 분이 있어서 그 게시물에 달린 답변을 읽어보았지만, 여전히 이해가 되지 않습니다... https://www.inflearn.com/questions/1045843/%ED%8A%B9%EC%A0%95-%ED%95%98%EC%9C%84-%ED%83%80%EC%9E%85%EC%9C%BC%EB%A1%9C-%EC%A1%B0%ED%9A%8C%ED%95%A0-%EB%95%8C-%EA%B6%81%EA%B8%88%ED%95%9C-%EC%A0%90-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 void findBeanBySubType() { RateDiscountPolicy bean = ac.getBean(RateDiscountPolicy.class); assertThat(bean).isInstanceOf(RateDiscountPolicy.class); }@Configuration static class TestConfig { @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } @Bean public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } }컨테이너를 보면 rateDiscountPolicy() 메소드의 리턴 타입은 DiscountPolicy 타입으로 되어있습니다. 따라서, rateDiscountPolicy라는 이름을 가진 빈은, DiscountPolicy 타입의 RateDiscountPolicy 객체를 저장할 것이라고 생각했습니다.이러한 상황에서 ac.getBean(RateDiscountPolicy.class)로 빈을 조회하면 RateDiscountPolicy 타입과 그것의 자식 타입 빈이 조회될 것입니다. 저는 ac.getBean(RateDiscountPolicy.class)이 어떻게 rateDiscountPolicy라는 이름의 빈을 조회할 수 있는지 알고 싶습니다.해당 빈은 RateDiscountPolicy 객체이지만, 타입은 DiscountPolicy 타입이므로 ac.getBean(RateDiscountPolicy.class)로 조회했을 때 걸리지 않을 것이라 생각했습니다... 답변 부탁드립니다.감사합니다!