묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
스프링으로 전환시 로그 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]해당 pdf 자료 참고하여 src/main/resources/logback.xml 파일에 해당 내용복사하여 만들었으나 memberApp 과 OrderApp 실행시 로그가 보여지지 않습니다
-
미해결스프링 핵심 원리 - 기본편
주문과 할인 도메인 개발에서 궁금한 점 있습니다.
제가 부족한 탓이지만, GPT에 물어봐도 해결되지 않아 이렇게 글로 남깁니다. package hello.core.order; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.member.Member; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } }이 코드에서 Member로 선언한 member가 질문인데, 생성자로 3개의 변수를 받는 것으로 설정되어있습니다. 근데 해당 코드를 보면 memberId만 대입하기에, 2개의 값이 불안정한 상태가 될 것이라고 생각하여 에러가 날 줄 알았는데, 그러지 않습니다. 이러한 이유를 알 수 있을까요?형편없는 질문을 해서 죄송합니다..
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
if문과 switch문에서의 return, break 사용례
안녕하세요.method 마지막 문제풀이중 질문이 있어 남깁니다! MethodEx4인데요,문제를 띄워놓고 먼저 풀이한 후에 강사님 풀이와 비교를 해보니아래와 같이 저는 if문으로 풀었는데break용법이 switch문과 차이가 있는 것같아 문의드립니다. *switch에서는 while문으로 돌아갈 때 사용*if문에서는 while문을 완전히 종료할 때 사용 예제 보여주시는 것을 보며 if문에도 break와 return을 모두 적용했는데완전히 종료되는것을 보았습니다. 이해한 부분이 맞는지 궁금합니다 :)
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
스크롤에 아이템을 선택했을때 강조하는 효과는 어떻게 구현하면 될까요?
안녕하세요.인벤토리 스크롤 영역에 선택한 아이템을 강조하는 효과는 어떤식으로 구현하면 될지 궁금합니다.강의를 본 뒤 선택한걸 강조하는 내용이 있나 돌아봤는데 해당 내용은 없는것 같아서요.아이템을 선택하면 선택된 아이템을 강조하는 효과의이미지를 활성화 시키려고 했는데 오브젝트를 재활용하는거다 보니 엉뚱한 오브젝트에 이미지가 활성화 되는데어떤식으로 해야 좋은 구조로 선택표시를 할 수 있을지 알려주실 수 있으실까요?
-
미해결스프링 핵심 원리 - 기본편
영한님처럼 application.properties에 한줄 추가해도 CoreApplication 안되는 상황
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한님처럼spring.main.allow-bean-definition-overriding=true를 추가하고 정상실행이 되길 바라는데 안돼서요. 여러 자주묻는 질문 및 검색을 통해-parameters 추가 및 out폴더 삭제 후 실행Gradle로 변경심지어 Gradle 최신 버전으로 변경까지 다 해봤는데 안돼서 묻습니다.아래는 에러화면입니다.현재 스프링부트 버전이 3.3.3인데 그래서 그런걸까요? ***************************APPLICATION FAILED TO START***************************Description:Parameter 1 of constructor in hello.core.order.OrderServiceImpl required a single bean, but 2 were found: - rateDiscountPolicy: defined in file [C:\Users\sungwoo\OneDrive\study\core\build\classes\java\main\hello\core\discount\RateDiscountPolicy.class] - discountPolicy: defined by method 'discountPolicy' in class path resource [hello/core/AppConfig.class]This may be due to missing parameter name informationAction:Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumedEnsure that your compiler is configured to use the '-parameters' flag.You may need to update both your build tool settings as well as your IDE.(See https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x#parameter-name-retention)Execution failed for task ':CoreApplication.main()'.> Process 'command 'C:\Program Files\JAVA\jdk-17\bin\java.exe'' finished with non-zero exit value 1* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.10.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 2s3 actionable tasks: 1 executed, 2 up-to-date
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Yield 를 사용한 후 currentThread
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. public void run() { while (!Thread.interrupted()) { if (jobQueue.isEmpty()) { Thread.yield(); continue; } ... }위에 코드에서 Yield 를 사용하면 그 쓰레드가 양보를 해서 다시 스케쥴러로 들어간다고 하셨는데, 그러면 Thread.yield(); 가 실행이 된 후에, 다시 CPU 가 이 쓰레드를 실행시키기 전까지 그 다음 줄의 continue 코드는 실행되지 않고 멈춰있는 상태라고 생각하면 될까요? 그렇다면 쓰레드는 CPU 가 다시 실행시킬 시점에 몇번째 라인까지 실행을 했는지 기억하고 있다가 CPU 에게 알려주는 건가요? 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
request scope 강의에서 Negative matches 가 뜨면서 무한 로딩이 걸립니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요, 현재 request scope 부분 강의를 들으면서 HTTP request 부분을 provider로 대체하면 실행이 된다고 하셔서 시도했는데 아래와 같은 메시지가 뜨면서 CoreApplication이 무한로딩이 걸립니다. 스프링 3.0이상의 버전을 써서 이렇게 나는걸까요? Negative matches 가 뜨면서 무한 로딩이 걸림Negative matches:-----------------ActiveMQAutoConfiguration:Did not match:- @ConditionalOnClass did not find required class 'jakarta.jms.ConnectionFactory' (OnClassCondition)AopAutoConfiguration.AspectJAutoProxyingConfiguration:Did not match:- @ConditionalOnClass did not find required class 'org.aspectj.weaver.Advice' (OnClassCondition)22:52:01.283 [main] INFO hello.core.CoreApplication --Started CoreApplication in 1.236 seconds (process running for 1.548)22:52:01.284 [main] DEBUG o.s.b.a.ApplicationAvailabilityBean --Application availability state LivenessState changed to CORRECT22:52:01.285 [main] DEBUG o.s.b.a.ApplicationAvailabilityBean --Application availability state ReadinessState changed to ACCEPTING_TRAFFIC
-
해결됨스프링 핵심 원리 - 기본편
초기화 콜백 쓰지말고 setUrl을 설정하고 나서 connect를 호출하면 되지않나여?
dfs package core.basic.lifecycle; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; public class BeanLifeCycleTest { //configurable-> @Test public void lifeCycleTest(){ //ApplicationContext>ConfigurableApplicationContext>AnnotationConfigApplicationContext ConfigurableApplicationContext ac = new AnnotationConfigApplicationContext(LifeCycleConfig.class); NetworkClient client=ac.getBean(NetworkClient.class); ac.close(); } @Configuration static class LifeCycleConfig{ @Bean//(initMethod = "init",destroyMethod = "close") public NetworkClient networkCilent(){ NetworkClient networkCilent = new NetworkClient(); networkCilent.setUrl("http://hello-spring.dev"); networkCilent.connent(); return networkCilent; } } }LifeCycleConfig에서 초기화 콜백 안쓰고도setUrl을 설정하고 나서connect를 호출하면 url이 잘호출되는데 ,,,초기화호출을 쓰는 이유가 있나요? connect호출시점이 setUrl다음에 오기만 하면 되니깐 이렇게 작성해도될거같아서요
-
해결됨김영한의 실전 자바 - 기본편
기본형은 immutable, 참조형은 mutable?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]결국, 기본형은 immutable, 참조형은 mutable 인건가요?
-
해결됨김영한의 실전 자바 - 중급 1편
Instant.now() 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.Instant.now() 메서드가 1970년 1월 1일 0시 0분 0초(UTC 기준)부터 현재까지 경과한 초(나노초)를 갖는 Instant 객체를 생성해서 참조를 반환한다고 보면 될까요?
-
미해결김영한의 실전 자바 - 중급 1편
날짜와 시간 Instant에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.제가 만약에 글로벌한 서비스를 시작해서 미국에서 접속하면 미국의 시간을 보여주고 한국에서 접속하면 한국의 시간을 보여줄 때는 ZonedDateTime을 쓰고서버에서 로그를 (미국에서 접속하든 한국에서 접속하든) 일관되게 남기고 싶다면 이때 Instant를 쓰면 되는 걸까요?만약 미국 사람은 미국 시간으로 로그를 남기고, 한국 사람은 한국 시간으로 로그를 남긴다고 하면 로그의 순서를 따져야 할 때 미국 시간을 한국 시간으로(또는 한국 시간을 미국 시간으로) 변환 해서 순서를 비교해야 하기 때문에 Instant를 사용하는게 좋다는 걸까요?
-
해결됨오브젝트 - 기초편
2-4 강에서 제공된 수업 노트 관련 질문 드려요
담당자님 안녕하세요!혹시 수업 노트에서 제공되는 예제 코드로 개선된 코드가 아닌 개선이 필요한 코드를 올려주실 수 있을까요?강의 7:30 부근에서 "여러분이 직접 결차적인 방식으로 작성된 코드 전체를 도메인의 구조에 맞춰서 변경..." 하면서 수업 노트로 제공된 예제 코드를 개선하는 과제를 암시하고 있습니다.단, 예제 코드는 이미 개선된 코드를 제공하고 있습니다.그래서, 의도된 바와는 다르게 개선된 코드를 더 개선하려고 노력하였습니다.읽어주셔서 감사드립니다!
-
해결됨김영한의 실전 자바 - 중급 1편
try - catch 에서 catch() 안에 객체 이름 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.궁금증이 생겨서 질문을 남깁니다.예외를 잡아서 처리하는 코드를 보던 중, 영한님이 try 한다음 catch 부분 에서 MycheckedEception e 이렇게 하는것을 볼수 있는데요.다른 catch의 객체 변수 이름을 보면 "e"라고 한 것을 확인할 수 있었습니다.catch에서 Exception예외 처리 로직의 이름을 지을때 'e' 라는 변수가 통용 되는 것인가요? 아니면 다른 변수 이름이 더 있나요?답변 부탁 드립니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
temurin 21버전 project JDK misconfigured 뜨면 사용 못하나요?
새 프로젝트를 만들고 setup jdk버튼을 눌러 테뮤린21을 다운받았습니다. 프로젝트 스트럭쳐에서 테뮤린이 적용되었는데 빨간색이고, 홈화면엔 misconfigured가 떠있다면 못쓴다는 의미일까요?그렇담 대신에 오라클오픈22 jdk를 사용하면되나요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
강의 이미지에 대해 질문 있습니다.
그림에서 main 스레드 안에 CPU 코어 1이 있는데 이 상황을 CPU 코어 1에 main 스레드가 할당 됐고 CPU 코어 1은 main 스레드의 스택 영역과 main 스레드가 속해 있는 프로세스의 코드, 데이터, 힙 영역에 접근해서 값을 가져다가 연산한다 라고 이해를 하면 될까요? CPU 내부에 존재하는 레지스터와 위 이미지의 캐시 메모리는 역할이 다르다고 보면 될까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
자바 스레드와 커널 스레드에 대해 질문 있습니다.
기존 Java의 스레드 모델은 Native Thread로, Java의 유저 스레드를 만들면 Java Native Interface(JNI)를 통해 커널 영역을 호출하여 OS가 커널 스레드를 생성하고 매핑하여 작업을 수행하는 형태로 알고 있습니다.앞서 얘기 해주신 Thread를 상속해서 만든 스레드와 Runnalbe을 사용해서 만든 스레드가 Java의 유저 스레드인지 궁금합니다.Thread thread1 = new Thread(runnable) 이런식으로 스레드를 생성 했을때 메모리의 힙 영역에 thread1이 저장되고 thread1을 위한 스택 영역이 생성된다고 보면 될까요?OS가 생성한 커널 스레드는 메모리 어디에 저장 되는지 궁금합니다.JVM은 JNI라는 기술을 사용해 자바의 유저 스레드와 커널 스레드를 매핑 해주는 작업만 해주고 이후에 스레드 관리는 OS가 하는건지 궁금합니다. 스레드를 생성할때마다 해당 스레드를 위한 스택 영역이 생성된다고 하셨는데 이때 커널 스레드를 위한 스택도 만들어지는 건지 아니면 커널 스레드가 유저 스레드의 스택 영역을 가져다 쓰는건지 궁금합니다.
-
해결됨김영한의 실전 자바 - 중급 1편
네트워크 ex0 코드를 이렇게 개선하는게 옳은 방법인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.켈리어몬트님 꺼 답변을 해주고 나서, 저의 글을 보면서,어? 라는 의문이 들었고, address을 불변 으로 변경해 보자라는 생각이 들어서, 변경해 보았습니다근데 만들다 보니 Data 불변으로 바꾸고 싶다는 생각이 들고, 하다 보니 , 네트워크 서비스 클래스를 수정 하게 되던 데요.네트워크 서비스에 클래스에 객체를 생성 하는게, 옳은 방법인가요?수정withMessage가 setter로 되있어서, new Data(@@)으로 변경수정2이름 이상해서 사진 변경(어제 바꾼건데, 귀찮아서 지금 올림.)추가1MainV0은 똑같습니다. 추가2불변에 반환 값 꼭 넣으시길 바랍니다.. 변하는지 확인 할려고, 확인 했다가 고생함..Data , AddressNetworkClientV0 , NetworkServiceV0 답변 부탁 드립니다.
-
해결됨파이썬 알고리즘 트레이딩 파트1: 알고리즘 트레이딩을 위한 파이썬 데이터 분석
ibkr 실적용에 관한 질문입니다.
선생님 강의를 파트1,2 모두 수강하며 부족하지만 틈틈히 공부하고 있습니다.바쁜일정을 핑계로 집중적으로 학습하지 못하는 점은 부끄럽습니다.하지만 학습을 하면서 궁금한 점이 있습니다.ibkr이라는 우량한 브로커를 이용하시는데 들리는 말로는 실계좌 오픈이 까다롭다는 말을 들었습니다.그리고 페어전략을 구성하려면 매수와 매도가 이루어져야 하는데 실계좌 오픈 후 한국 사용자가 매수매도모두 이용할수 있나요? 그리고 주식뿐 아니라 외환이나 파생상품도 가능한지 궁금합니다.그리고 실전적용시 시스템적으로 어떠한 부분을 주의해야하는지도 궁금합니다.부족한 질문이지만 답변부탁드립니다.
-
미해결김영한의 실전 자바 - 중급 1편
참조값을 확인하려면 hashCode() 메서드를 사용하면 될까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]String d = new String("TEST"); String e = new String("TEST");각각의 참조값이 다르게 생성되어야 함에도 System.out.println(d.hashCode()); System.out.println(e.hashCode());해보면 결과값은 동일한 해쉬값이 나옵니다. 동일성 비교는 false, 동등성 비교는 true가 되고요.문자열 리터럴일 경우 문자열 풀을 사용하는 것은 이해가 되었는데 객체생성도 문자열에서는 동일한 문자열 풀을 사용하는지 궁금해서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
interface가 왜 빈에 등록이 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 프로젝트 압축파일 :https://drive.google.com/file/d/1JuIfXWrbMbE0SuppC6Pnd36vSqKkp2aX/view?usp=drive_link강의를 보면서 allTest를 하니 강의에 없는 오류가 나와서 질문드립니다. CoreApplicationTest -> contextLoads 부분 오류 내용은 다음과 같습니다expected single matching bean but found 2: memoryMemberRepository,memberRepository즉, 하나의 빈을 찾아야하는데 2개의 빈을 찾았다는 뜻입니다.그래서 "MemberServiceImpl"의 생성자에 @Qualifer 어노테이션을 사용하니 오류가 사라졌습니다.@Autowired public MemberServiceImpl(@Qualifier("memoryMemberRepository") MemberRepository memberRepository) { this.memberRepository = memberRepository; }하지만 궁금증이 남았습니다. @Component 어노테이션을 사용하지도 않은 interface가 빈으로 등록이 되는걸까? 궁금해서 contextLoads 함수에서 MemberRepository.class의 빈을 찍어봤습니다.다음과 같이 interface도 빈으로 등록이 되어 있음을 확인했습니다. 추상 클래스라 생성도 하지 못 하는데 왜 빈에 올라가 있는 것인지 의아하여 gpt에게 질문을 해보니"인터페이스를 구현한 클래스가 빈으로 등록될 때, 해당 인터페이스의 이름도 빈의 별칭(alias)으로 자동 등록됩니다. 이 빈 객체는 두 개의 이름("memoryMemberRepository"와 "memberRepository")으로 참조될 수 있습니다."라는 답변을 받았습니다. 만약 해당 답변이 옳다면1. 굳이 왜 alias가 필요했던 것인가?2. alias이면 같은 것을 참조하는데 컴파일러는 왜 고민을하고 에러를 띄운것인가?3. @Qualifier의 사용이 필연적인가? 강의에서는 왜 그렇지 않았는데 해당 오류가 없었나?이렇게 3가지 질문을 드리고 싶습니다.