묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
fake Repository로 테스트를 진행하려고 합니다,
실제 유저 엔티티 가지고 userRepository를 해야하나요? 이것을 가지고 테스트를 해봤는데 id를 자동 매핑으로 해놔서 실제 fake로 테스트할때 id 값을 넣어줄 수가 없어서 구현에 어려움을 겪고 있습니다. 새로 Fake에 적용될 유저 도메인을 작성해야하나요?
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 강의 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]의존관계 자동 주입 강의에서 수정자 주입 부분 설명하실때 setMemberRepository 와 setDiscountPolicy 메서드에 print문 작성하고 테스트 돌리면 set메서드를 호출하지 않았는데 어떻게 print문도 출력이 되는건가요??OrderServiceImpl 을 빈으로 등록할때 거깄는 메서드까지 다 호출하는건가요??
-
미해결스프링 핵심 원리 - 기본편
@Qualifier 코드 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]fixDiscountPolicy에 @MainDiscountPolicy를 붙이고 OrderServiceImpl 생성자에서 동일하게public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy)라고 주입을 했습니다.하지만 에러가 나는데 아래와 같이 납니다.No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: mainDiscountPolicy,rateDiscountPolicy보면 fix가 아닌 mainDiscountPolicy와 rateDiscountPolicy를 찾았는데요.어디에 코드를 놓쳤을까요? 영상 두번 돌려봐도 도저히 다른점을 모르겠어요.
-
미해결스프링 핵심 원리 - 기본편
JVM에 대한 질문
제가 JVM이 어떠한 구조인지 잘 모르겠는데JVM에 새로운 객체들을 계속 생성하는 메모리 문제는 Java(JVM) 만의 문제인가요? 아니면다른 언어들도 예를 들면 자바스크립트의 prototype, 파이썬에서도 Class로 객체를 만들 수 있고go언어는 struct 로 객체를 만들 수 있는데 이러한 것들도 스프링처럼 싱글톤으로 관리해주는 프레임워크가 없으면 메모리가 가득 차게 되나요?그러면 웹 어플을 만든다고 할 때 가능하면 객체들은 싱글톤 패턴으로 개발해야 좋은 건가요?
-
미해결스프링 핵심 원리 - 기본편
중복 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요MemberServiceImpl.javaMemoryMemberRepository.javaAppConfig.javaParameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found:- memoryMemberRepository: defined in file [C:\Users\cksgu\Spring\스프링 핵심 원리 - 기본편\core\core\out\production\classes\hello\core\member\MemoryMemberRepository.class]- MemberRepository: defined by method 'MemberRepository' in class path resource [hello/core/AppConfig.class]. CoreApplicationTests를 실행하면 위와 같은 오류가 나는데뭐가 문제일까요? 제가 생각하기에는 스프링 컨테이너 내에 있는 MemberRepository 타입의 빈이 여러 개가 있어서 그런 것 같은데 맞나요? 제가 생각하는 스프링 빈이 등록하는 과정과 충돌 되는 이유는 다음과 같습니다. @Bean으로 인해이름이 MemberRepository인 MemoryMemberRepository를 빈으로 등록(처음에는 앞 글자가 소문자인 memberRepository 이름으로 등록 되는 줄 알았는데 출력을 해보니 MemberRepository 이름 그대로 저장되는 것 같아요.) @Component으로 인해이름이 memoryMemberRepository인 MemoryMemberRepository를 빈으로 등록 3. MemberServiceImpl에서 @Autowired으로생성자 주입을 하기 시작함.생성자 매개변수가 MemberRepository 타입이므로 MemberRepository 타입과 일치하는 빈을 스프링 컨테이너에서 찾아서 주입한다. 그러나 일치하는 빈이 여러 개 있으므로 충돌이 남... 혹시나 해서AppConfig.java 내에 있는 MemberRepository() 함수를앞 글자가 소문자인 memberRepository() 함수로 바꿔서 실행하면 잘 동작하는데 왜 그런지 알 수 있을까요?MemberRepository() 함수 이름이 MemberRepository 타입의 이름과 일치하면 안되나요? 빈 이름만 바꿨을 뿐 타입이 일치하는 빈이 스프링 컨테이너에서 여전히 여러 개일 텐데 왜 오류가 날지 않는지 궁금합니다. ============== 자답 =============== @Autowired 매칭 정리1. 타입 매칭2. 타입 매칭의 결과가 2개 이상일 때 필드 명, 파라미터 명으로 빈 이름 매칭한다고 합니다. @Bean으로 인해이름이 MemberRepository인 MemoryMemberRepository를 빈으로 등록 @Component으로 인해이름이 memoryMemberRepository인 MemoryMemberRepository를 빈으로 등록 MemberRepository 타입과 일치하는 두 개의 타입을 찾았고,그중에서 MemberServiceImpl 생성자 파라미터 명 memberRepository과 일치하는 빈이 없으므로 오류가 나는 것 같습니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
this의 사용에 대해
안녕하세요. 나름대로 혼자 코드를 짜고 문제를 풀어보았습니다. 근데 SpeedCam의 코드에서 저의 코드는 package camera2; import detector.*; import reporter.*; public class SpeedCam extends Camera { private Detectable detect; private Reportable report; public void setDetect(Detectable detect) { this.detect = detect; } public void setReport(Reportable report) { this.report = report; } public void showMainFeature() { System.out.println("속도 측정, 번호 인식"); } public void detect() { detect.detect(); } public void report() { report.report(); } } 이러합니다. 정상적으로 목표 결과도 얻었습니다 근데 강사님의 코드는 public void detect() { this.detect.detect(); } public void report() { this.report.report(); } 이렇게 다른 부분이 존재하는데this는 왜 필요한걸까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
질문있습니다
아래 코드에서 detect메소드는 public으로 해줘야 에러가 안뜨더라구요. 무조건 정의는 public으로 해줘야 하는 건가요? package detector; public class AcciedntDetector implements Detectable{ public void detect() { System.out.println("교통 사고를 감지합시다."); }; }
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
안녕하세요 인터페이스에서 궁금한게 하나더 생겨서 질문드립니다.
항상 답변해주셔서 감사합니다. 너무 큰 도움이 됩니다.저의 질문은 아래의 코드에서 package camera2; import reporter.*; import detector.*; public class FactoryCam extends Camera implements Detectable, Reportable{ private Detectable detector; private Reportable reporter; public void setDetector(Detectable detector) { this.detector = detector; } public void setReporter(Reportable reporter) { this.reporter = reporter; } public void showMainFeature() { System.out.println("화재 감지"); } // // public void detect() { // System.out.println("화재를 감지합니다."); // // } // // public void report() { // System.out.println("화재 신고를 진행합니다."); // } // @Override public void detect() { detector.detect(); } @Override public void report() { reporter.report(); } } 제가 궁금한 부분은 private Detectable detector; private Reportable reporter; public void setDetector(Detectable detector) { this.detector = detector; } public void setReporter(Reportable reporter) { this.reporter = reporter; }이 부분인데요. 해당 코드는 implements Detectable, Reportable해줌에 대한 여부와 상관없이, import 패키지를 해줌으로 가능한 부분인건가요?
-
미해결스프링 핵심 원리 - 기본편
소멸 메서드의 호출 시점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]SingletonBean.init singletonBean1 = hello.core.scope.PrototypeTest$SingletonBean@54504ecd singletonBean2 = hello.core.scope.PrototypeTest$SingletonBean@54504ecd org.springframework.context.annotation.AnnotationConfigApplicationContext - Closing SingletonBean.destroysingletonBeanFind()의 실행 결과입니다.결과를 보면 ac.close() 로 인해 스프링 컨테이너가 종료된 뒤(네 번째 라인), 싱글톤 빈의 종료 메서드가 호출됩니다. 제가 이해한 바로는 싱글톤 빈의 소멸 메서드는 스프링 컨테이너가 종료되기 전에 호출된다고 알고 있습니다. 그런데 출력 순서를 보면 반대로 되어있어서 왜 그런건지 모르겠습니다
-
해결됨스프링 핵심 원리 - 기본편
basicScan() 테스트는 통과되는데 설정된 빈 내역이 로그에 나오지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]AutoAppConfigTest.java의 basicScan() 테스트 메소드는 잘 돌아가는데요.Test Passed라고만 뜨고 설정된 빈 내역들이 로그에 뜨지 않네요...빈들은 제대로 설정 됐는지 모든 테스트들은 패스가 되긴하는데ㅠㅠ...강의를 따라하면서 종종 선생님 로그와 다를때가 있긴 했는데 큰 문제는 되지 않아서 그냥 넘겼거든요.혹시나 따로 뭘 설정해줘야하는지, 아니면 제가 놓친게 있는 걸까요?
-
미해결스프링 핵심 원리 - 기본편
스프링3에 어떻게 깔아야할까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 인텔리제이가 비싸 스프링3에 스타터스트링에서 설정해놓은 파일을 다운받아 임포트 하려고 하는데 강의상 말씀하신 툴이 달라 어떻게 임포트 해야하는지 모르겠습니다 ㅜㅜ설명 부탁드립니다.
-
해결됨스프링 핵심 원리 - 기본편
request 코스의 다음 http에서 나오겠죠..?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에서는 되게 느낌 상 중요한데.. HTTP 섹션이랑 소제에는 안보여서.. 웹 브라우저 요청 흐름, 리다이렉션 이런 곳에서 나올려나요.. ㅎㅎ
-
미해결스프링 핵심 원리 - 기본편
구성정보 클래스에 @Configuration 이 없는 경우
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용중 위와 같은 테스트 과정이 있습니다. 구성 정보인 PrototypeBean 클래스에 @Configuration 애노테이션이 없는 이유를 "@Bean으로 등록할 객체가 없기때문에 굳이 붙힐 필요가 없다." 라고 이해하면 되나요?
-
미해결스프링 핵심 원리 - 기본편
빈 스코프 강의 관련
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빈 스코프 강의에서 싱글톤 스코프 빈 테스트 하는 도중에요 SingletonBean 클래스에 @Configuration 이나 @Bean 같은걸 붙이지 않았는데 위의 메소드에 new AnnotationConfigApplicationContext(SingletonBean.class); 를 해서 어노테이션을 붙이지않아도 자동으로 SingletonBean 클래스가 컴포넌트 스캔돼서 등록되는 게 맞나요?? 그리고 SingletonBean 객체는 new Annotation~(SingletonBean.class) 할 때 생기는게 맞나요? 그리고 @PostConstruct 가 붙은 함수는 getBean(SingletonBean.class) 를 할 때 스프링 컨테이너가 의존관계를 주입하고 나서 호출이 되는건가요?? 싱글톤 스코프 빈일때는 @PostConstuct 가 붙은 함수가 1번만 호출이 되는데 다른 곳에서 스프링 빈을 요구할때 스프링 컨테이너가 @PostConsturct 는 호출하지 않고 스프링 빈만 반환해 주는건가요??
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
super 질문 있습니다.
안녕하세요 super 질문드립니다.super를 사용해서 부모 클래스에서 recordVideo를 불러오고 그 다음에 detecFire를 실행하는데아래 public void detecFire()~이 있는 부분은 삭제하지 않아도 되는 건가요?
-
미해결스프링 핵심 원리 - 기본편
빈 생명주기 콜백
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빈 생명주기 콜백 강의를 듣고 있는데요 정확히 초기화 콜백이 뭔지 잘 이해가 되지 않아서요ㅠㅠ@Bean(initMethod = ~) 이렇게 초기화, 소멸 메서드를 지정할 경우 강의에서 보여주신 예시처럼 LifeCycleConfig 클래스를 보면NetworkClient networkClient = new NetworkClient();networkClient.setUrl(~);return networkClient;인데 setUrl 메서드가 수행되고나서 초기화 메서드인 init() 메서드가 수행되는 건가요??초기화 메서드는 객체가 생성되고 의존관계가 주입된 후 수행된다고 했는데 그게 정확히 언제를 말하는지 잘 모르겠어요ㅠㅠ 그리고 @Bean(initMethod = "init", destroyMethod = "close")라고 했는데요 저기있는 초기화, 소멸 메서드는 등록되는 빈의 타입(?)인 NetworkClient 클래스에 존재하게 해야되는건가요? 아님 다른 클래스에 있어도 쓸 수 있는건가요??
-
미해결스프링 핵심 원리 - 기본편
생성자 주입을 사용하는 경우 생성과 초기화의 분리
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 :) 강의를 듣다가 초기화 시점에 대한 의문이 생겨 질문 드립니다. 먼저 객체의 생성과 초기화를 분리해야 한다는 말의 요지는 이해하였습니다!그런데 생성자 주입을 사용하는 경우에는 생성자 호출과 함께 의존관계가 주입된다고 배웠는데,이 경우에는 생성자 내에서 초기화를 함께 해도 정상적으로 초기화가 일어날 수 있는 것인가요? (객체에서 외부 API 연결 초기화 등의 작업을 해야 하는 경우)혹은 다른 권장되는 방법이 있다면 알려주시면 감사하겠습니다 !! 항상 좋은 강의 감사합니다 🙂
-
해결됨스프링 핵심 원리 - 기본편
request scope
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]LogDeomContrller에서 MyLogger myLogger = myLoggerProvider.getObject(); 할 때 MyLogger 객체를 생성해서 반환하는 것으로 인지했습니다. 그런데 LogDeomService에서 다시 한 번 MyLogger myLogger = myLoggerProvider.getObject(); 를 할 때 어떤 원리로 LogDeomContrller에서 생성된 MyLogger객체를 가져올 수 있는지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
@Configuration
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Configuration을 지정해주지 않아도 스프링 컨테이너 파라미터에 등록하게 되면 싱글톤이 보장되는게 맞나요? 맞다면 그 이유는 scope의 defualt가 싱글톤이기 때문인가요? @Configuration의 역할이 CGLIB를 사용해서 싱글톤을 유지해주는걸로 알고있는데 만약 1번에 가정이 맞다는 경우에 굳이 @Configuration을 사용하지 않아도 싱글톤을 유지해줄텐데 @Configuration을 사용하는 이유가 궁금합나다.
-
해결됨[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
안드로이드 스튜디오 에뮬레이터 권장사양
안드로이드 스튜디오에서 코딩하는 것까지는괜찮은데,에뮬레이터로 실행해서 화면 띄우는 거까지 보려면속도가 너무 느립니다.에러가 있을 경우에는 더 답답하고요.일반적인 사무, 인터넷용으로는 답답함을 전혀못 느꼈는데, 유독 코딩할 때만 너무 느리네요컴퓨터를 새걸로 바꿔야 하나 싶기도 한데,안드로이드 스튜디오 에뮬레이터를 원활히돌리려면 컴퓨터 사양이 어느 정도 되면 될까요?(gpu도 좋은게 있어야 할까요? 제가 게임은 별로 안해서요..) 참고로 현재 컴퓨터 사양은cpu: amd 3300ram: 8기가ssd: 500gbgpu: 메인보드 내장형 입니다.