묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
application.properties 수정을 해줘도 에러가 납니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]에러메시지와 AutoAppConfig, AppConfig를 보여드릴게요 ***************************APPLICATION FAILED TO START***************************Description:Parameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found: - memoryMemberRepository: defined by method 'memberRepository' in class path resource [hello/core/AutoAppConfig.class] - memberRepository: defined by method 'memberRepository' 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) package hello.core; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import org.springframework.context.annotation.*; @Configuration//설정정보니까 @ComponentScan//스프링빈을 쫙 긁어 가지고 자동으로 스프링 빈으로 끌어올려야 된다. ( basePackages = "hello.core.member",//이 위치에서부터 찾아서 들어가는 것 이렇게 해갖고 멤버부터 컴포넌트 스캔 대상이 된다 basePackageClasses = AutoAppConfig.class,//지정한 클래스의 패키지를 탐색 시작 위치로 지정한다. 지정 안하면 디폴트 excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) )//컴포넌트 스캔을 사용하면 @Configuration 이 붙은 설정 정보도 자동으로 등록되기 때문에, AppConfig, TestConfig 등 앞서 만들어두었던 설정 정보도 함께 등록되고, 실행되어 버린다. 그래서 excludeFilters를 이용해서 설정정보는 컴포넌트 스캔 대상에서 제외했다. public class AutoAppConfig {//테스트 결과 memberService2, memoryMemberRepository 이두가지만 입력 됨 @Bean(name= "memoryMemberRepository") //@Primary //한 빈을 기본적으로 사용하고 싶다면 그 빈에 @Primary 어노테이션을 추가하세요. public MemberRepository memberRepository(){ return new MemoryMemberRepository(); } }// 설정 정보 클래스의 위치를 프로젝트 최상단에 두는 것, 프로젝트 시작루트에 두는게 좋음, componentScane->스프링 빈 자동 등록 SpringBootApplication ctrl+클릭해보면 알수 있다. //컴포넌트 스캔 기본 대상 컨트롤러, 서비스, 리포지터리, 컨피규레이션 다 스프링 빈 등록 어노테이션 상속이나, 연동되는 기능없다.package hello.core; import hello.core.discount.DiscountPolicy; 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.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @Configuration //안붙여도 스프링 컨테이너에 스프링 빈로 다 등록됩니다 애를 빼고 테스트시 순수한 앱구성이 출력됨 근데 이렇게 되면 다른 싱글톤이 깨짐 출력이 5개 전체 출력됨 public class AppConfig { //@Bean memberService -> new MemoryMemberRepository() //@Bean orderService -> new MemoryMemberRepository() 이렇게 하면 싱글톤이 깨지지 않을까요?? //이 골뱅이 빈이면 컨텐츠 앱이 들어와요 //call AppConfig.memberService //call AppConfig.memberRepository //call AppConfig.memberRepository //call AppConfig.orderService //call AppConfig.memberRepository //실제 테스트 돌려보니 //call AppConfig.memberService //call AppConfig.memberRepository -> 이게 세번호출되어야 하는데 한번만 호출 된 신기한 상황 스프링이 정말 어떠한 방법을 써서라도 싱글톤을 보장해 주는구나 라는 걸 아실 수 있음 //call AppConfig.orderService //appconfig에 비밀이 있다. //이 골뱅이 빈이 붙은 메서드마다 이미 스프링빈이 존재하면 존재하는 빈을 //반환하고 스프링빈이 없으면 새로 생성해서 스프링빈으로 등록해서 반환하는 코드가 동적으로 //만들어지는 거예요 이덕분에 싱글톤이 보장되는거에요 없으면 스프링빈등록, 있으면 기존에 꺼내서 반환 그렇기 때문에 세번 호출되는게 아니라 한번만 호출 이미 등록이 되있어서 // @Autowired MemberRepository memberRepository;//이렇게하면 Configuration 없애도 해결이됨 의존관계 주입 그러면 스프링에서 다시 끌어온 거를 집어넣어 주는 거거든요 @Bean public MemberService memberService(){// 멤버서비스가 빈의 이름 System.out.println("call AppConfig.memberService");//soutm return new MemberServiceImpl(memberRepository());// ctrl+alt+m 리턴해서 new해서 반환하는 요 객체를 빈 객체로 등록해준다. 요거를 스프링 빈이라고 한다. }// 빈 이름은 항상 다른 이름을 부여 @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(); } }
-
미해결스프링 핵심 원리 - 기본편
applcation.properties 수정해도 에러가 납니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Parameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found: - memoryMemberRepository: defined by method 'memberRepository' in class path resource [hello/core/AutoAppConfig.class] - memberRepository: defined by method 'memberRepository' in class path resource [hello/core/AppConfig.class]This may be due to missing parameter name information이런 에러메시지가 뜨고.. AutoAppConfig 클래스 @Bean(name= "memoryMemberRepository") MemberRepository memberRepository(){ return new MemoryMemberRepository(); } 그리고 AppConfig 클래스 @Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepository(); }이렇게 두 메서드 이름이 같아서 생기는 거 같은데 원래 여기 까지 들을때 다른 이름으로 수정 되어있어야 하나요?
-
미해결스프링 핵심 원리 - 기본편
main 패키지와 test 패키지의 컴포넌트 스캔 범위
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] @Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); // 생략... } @Component static class DiscountService { // 생략 }DiscountService.class를 new AnnotationConfigApplicationContext()의 인자로 대입하는 대신에, 클래스에 @Componant를 붙였는데 정상적으로 테스트가 통과됐어요.제가 알기로는 AutoAppConfig는 main 패키지에 속하며, DiscountService는 test 패키지에 속하니깐 DiscountService는 컴포넌트 스캔의 대상이 아니지 않나요? 그런데 어째서 정상적으로 의존관계 주입이 된 건가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
executor service를 스프링에서 이용한다면 어떻게 관리하는게 좋은가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]실무에서 강의를 수강하기 이전에 자바에서 제공하는 executor service를 사용하여 병렬로 프로그램을 짠 경험이 있는데요.저는 spring boot를 사용하여 service 내부에 executors의 고정스레드풀을 사용하여 특정 서비스를 호출할때마다 생성하도록 했습니다.예를 들면, List<?> methodA(req) { ExecutorService es = Executors.newFixedThreadPool(10); List<CompletableFutures> tasks ... // 비즈니스로직 finally{ // shutdown 로직}}공통으로 executor 서비스를 관리하는 클래스를 만들어서 사용해야할까요? 우선 제가 개발한 환경에서는 executor service를 저만 사용했습니다.만약 위에 제가 작성한대로 methodA를 호출할 때마다 쓰레드 풀이 생성되는거 같은데 맞을까요? 이런 방식보다 더 효율적으로 쓰레드를 관리하고 정리할 수 있는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
강의 순서 문의(자주 묻는 질문 완독 완료)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요, 김영한 강사님.마지막 수업 "65. 다음으로" 강의에서 스프링 입문, 스프링 핵심 원리 기본편 수강 후 스프링부트 JPA 로드맵을 진행해도 된다고 말씀해주셨었는데요. 이 말씀이 지금 2025년 7월 기준에도 적절한지 여쭙고자 질문 드립니다. 지금 현재 학습을 해야하는 상황은 아래와 같습니다. 스프링 데이터 JPA와 QueryDsl 을 사용하는 프로젝트에 8월 초 투입이 될 예정영한 선생님 로드맵 중 스프링 관련 학습은 입문편과 핵심 원리 기본편 까지 학습함이전에 Spring + Mybatis로 개발경험이 있어서 1번 기술 스택을 우선적으로 추가해야 할 필요를 느낌 자주 하는 질문에 작성되어있는 백엔드 개발자 로드맵 유튜브 영상은 확인했습니다. 해당 로드맵은 핵심 원리 고급편 전 까지 듣고 JPA 로드맵을 청강 후 남은 고급편 등을 청강하는 것으로 알고있는데요. 이 로드맵을 8월 초까지 다 듣기는 현실적으로 어렵다보니, 스프링부트 JPA를 먼저 장착해도 되는지 궁금합니다. 좋은 강의 늘 감사드리며 질문 마칩니다.감사합니다 :D
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
jdk version
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]oracle openjdk 설치하려고 할 시 버전이 21은 선택이 안되고 24로 고정되어 선택되는데 vendor를 변경해도 될까요? 아니면 버전을 24로 해도 될지 궁금합니다.
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
강의 내용 정리 및 자료 제작 툴 문의 드립니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 강사님 안녕하세요. 🙂 우선, 테스트 코드에 이어 양질의 강의 제공해 주셔서 감사합니다! 🙏🏻프로젝트 리팩토링 단계에서 본 강의를 접한 덕분에 많이 배우고 있습니다! 혹 제가 이해한 내용을 바탕으로 블로그 혹은 깃허브에 정리해도 될지요?출처는 기재할 예정이며, 블로그 수익과는 전혀 관계없습니다. 더불어 강의 자료 제작 시 사용하시는 드로잉 툴?이 어떤 것인지도 궁금합니다. 답변 기다리겠습니다, 감사합니다!
-
미해결김영한의 실전 자바 - 기본편
문제해결 전 코드
문제 풀이 영상에서 강사님 따라서 코드 작성하고 싶은데,문제해결전 코드는 어디에 있나요수업자료에는 문제가 해결된 코드밖에 찾지 못해서요 문제해결전 코드가 어느 파일에 있는지 알려주시면 감사하겠습니다
-
해결됨오브젝트 - 설계 원칙편
함수형 스타일에 대해선 어떻게 생각하시나요?
이제 꼭 함수형 언어를 사용하지 않더라도 요즘 언어들 대부분 함수형 언어의 아이디어나 장점들을 반영하는 트렌드인데, 회사에서도 코틀린을 사용 중이라 질문 드려봅니다.코틀린 라이브러리들을 사용하다 보면 함수형 스타일의 설계와 API들을 꽤 많이 보고 있기도 하고 특히 람다를 굉장히 많이 사용하는데 적절하게 람다나 함수형 스타일의 코드를 사용하는 기준이나 원칙들도 있으신지 궁금하네요.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
단축키 툴팁
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 단축키가 밑에 초록색으로 툴팁 생성되잖아요어떤 걸 설치하거나 설정하면 뜰까요?
-
해결됨스프링 핵심 원리 - 기본편
프로젝트 생성에서 에러가 나요
스프링 핵심원리 이해 1 - 프로젝트 생성 강의에서 이렇게 설정 후 core 압축 파일을제가 원하는 폴더에 풀어서 인텔리제이에서 열었고 현재 이 build.gradle 코끼리 버튼을 누르니 콘솔창에 밑에 사진처럼 에러가 떠요 여기서 어떻게 해야하는지 알 수 있을까요?
-
미해결파이썬 알고리즘 트레이딩 파트1: 알고리즘 트레이딩을 위한 파이썬 데이터 분석
groupby할 때,
self.df_signal_summary = (self.df_pair .groupby("signal_group") .agg({"signal": "first", "time": "first", self.stock1: ["first"], self.stock2: ["first"]}) .reset_index(drop=True) )여기서 'signal'과 'time'은 'first'를 사용해서 값을 지정하는데, self.stock1과 self.stock2는 왜 ['first']로 리스트화시켜서 값을 지정하나요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
oracle openjdk가 없어요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 oracle openjdk가 없는데 어떻게 해야하나요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
J,JS차이입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에는 J만 떠있는데 저는 JS가 떠있는데 왜 그런건가요? 문제가 있나요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
소스코드 실행방법 질문입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.현재 저는 윈도우이며 현재 소스코드를 하는중인데 자꾸 저 화면처럼 안된다고 뜨는데 어떻게 하나요? java-start이름도 바꿔봤는데 안되네요
-
미해결코틀린 고급편
val 키워드도 setValue가 있나요?
by lazy 위임 프로퍼티 강의에서 by 키워드를 사용하려면 getValue 함수와 setValue 함수가 필요하다고 하셨는데 val 키워드로 변수 선언 시 setValue가 존재할수 없지 않나요? var 키워드 -> getValue(),setValue()val 키워드 -> getValue()로 by 키워드를 사용할 수 있는것같아 질문드립니다.
-
해결됨스프링 핵심 원리 - 기본편
request Scope 질문. 다른 강의에서 더 활용하는지?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 드립니다.requset scope가 웹 스코프 에서 중요한 역할을 한다는것을 어느 정도 인지가 되는 상황이지만, 여러 번을 들어도 "모르겠다"라는 는 말이 저절로 나옵니다...그래서 일단은 그냥 넘어 갈려고 합니다.여기서 질문입니다.requset Scope를 더욱더 활용하거나 공부하는 강의가, 다음 강의 및 다른 강의에서 있나요?추가1만약에 없다면 어떤 것을 들어야(해야지) 이해 할수 있을까요?답변 부탁드립니다.
-
미해결김영한의 실전 자바 - 기본편
helloshop
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.com.helloshop이라 쓰면 그냥 패키지 하나로 뜨고 그 밑에 product를 만들어도 helloshop패키지 이름이 바뀝니다. 뭐가 문제일ㄲ?ㅏ요
-
미해결김영한의 실전 자바 - 중급 2편
퀴즈 오류 관련 문의
1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네
-
해결됨오브젝트 - 설계 원칙편
값 객체 활용에 대해
안녕하세요. 항상 객체 지향의 본질을 가르쳐주시는 강의 정말 잘 듣고 있습니다. 실무에서 JPA를 사용할 때 값 객체 활용에 대해서도 궁금합니다. RDB 기준 하나의 테이블에 매핑되는 경우말고, 값 객체를 별도의 테이블로 매핑해야될 경우에도 많이 사용하시는지 궁금합니다.