묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
MemberServiceImpl 에서 싱글톤이 2개 발견했다하는데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) escription:Parameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found: - memoryMemberRepository: defined in file [/Users/root1/Documents/java/core/out/production/classes/hello/core/member/MemoryMemberRepository.class] - memberRepository: defined by method 'memberRepository' in class path resource [hello/core/AppConfig.class] 웹설치하고 이런 오류가 뜨네요AppConfig@Configuration public class AppConfig { @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(); } } public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; }2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 핵심 원리 - 기본편
빈 생성 로그 출력
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 자료에 있는 내용처럼 로그백 파일을 설정해주면 빈 생성 관련 로그가 잘 출력되는데 로그백 파일을 사용하지 않고 application.properties 파일에logging.level.root=DEBUG logging.level.org.springframework=DEBUG logging.level.org.springframework.beans=DEBUG이런 식으로 설정을 했는데 빈 생성 로그가 출력되지 않습니다.원인이 무엇인가요
-
미해결김영한의 실전 자바 - 기본편
기본형과 참조형 문제와 풀이 마지막 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.18,20줄에 nextInt()를 두 번 사용하면 버퍼에 \n\n줄바꿈 문자 2개가 남게되고, 이후에 21줄에서 nextLine()을 통해 입력 버퍼를 비운다고 했는데, nextLine()은 \n 하나만 처리하는거 아닌가요? 그렇게 되면 버퍼에 \n이 하나 남게되고, 순회(int i = 1)할 때, 다음 16줄의 nextLine()에서 \n을 처리하여 빈 문자열(" ")을 반환하지 않나요? 그런데 이 코드를 돌려보면 nextInt()를 두 번 호출하고, nextLine()을 호출하면 \n\n 줄바꿈 문자 2개를 연속으로 버퍼에서 처리되었는데 그 이유가 무엇인가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ReentrantLock과 sleep()에 대해 질문 있습니다.
ReentrantLock 사용시 쓸 수 있는 락이 여러 개 있는지 아니면 하나만 쓸 수 있는지 궁금합니다.Object의 wait() 사용 시 스레드가 스레드 대기 공간에서 기다리는 것처럼 sleep() 같은 경우도 따로 대기하는 공간이 있는지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 1편
equals 설계가 이해가 어렵습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]equals는 매개변수를 받으면-> User2 클래스로 변환 (다운캐스팅)-> 만들어진 User2객체에서 id 추출-> 그걸 User2 id와 비교정리하면 들어온 Object를 User2로 바꾸어 id를 확인하는 메서드인데User2를 User2로 다운캐스팅하여 User2와 비교 후 User1 과 비교하는 로직 아닌가요?어느부분이 잘못된건지 모르겠습니다ㅜㅜ
-
해결됨김영한의 실전 자바 - 중급 2편
다형성을통한 중복 해결시도 - 잘못된 타입의 인수쪽 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 강의를 듣다가 질문이 생겨서 질문을 남깁니다.마지막에서 잘못된 타입의 인수를 전달할 때 해결 방법으로 instance-of가 생각나더라고요.근데 이 방법이 있어도 안 한 이유가, IntegrBox랑 ObjectBox랑 대조 설명 하시면서, 코드의 재사용성, 코드의 안정성을 말씀하시던데,instance-of를 하게 되면(클래스를 만들든 메서드로 만들든) 타입마다 계속 비교해서 코드가 한없이 길어지기 때문에, 코드의 재사용X 이기 때문에 안 하신건가요?추가1아니면 다른 이유가 있는 것 인가요?답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ReentrantLock 과 Condition 에 대해 질문 있습니다.
public class BoundedQueueV4 implements BoundedQueue { private final Lock lock = new ReentrantLock(); private final Condition condition = lock.newCondition(); private final Queue<String> queue = new ArrayDeque<>(); private final int max; public BoundedQueueV4(int max) { this.max = max; } @Override public void put(String data) { lock.lock(); try { while (queue.size() == max) { log("[put] 큐가 가득 참, 생산자 대기"); try { condition.await(); log("[put] 생산자 깨어남"); } catch (InterruptedException e) { throw new RuntimeException(e); } } queue.offer(data); log("[put] 생산자 데이터 저장, notify() 호출"); condition.signal(); } finally { lock.unlock(); } } @Override public String take() { lock.lock(); try { while (queue.isEmpty()) { log("[take] 큐에 데이터가 없음, 소비자 대기"); try { condition.await(); log("[take] 소비자 깨어남"); } catch (InterruptedException e) { throw new RuntimeException(e); } } String data = queue.poll(); log("[take] 소비자 데이터 획득, notify() 호출"); condition.signal(); return data; } finally { lock.unlock(); } } @Override public String toString() { return queue.toString(); } }synchronized를 사용 했을때는 객체가 기본적으로 가지고 있는 락과 스레드 대기 공간을 사용하는거 같습니다. 궁금한점은 ReentrantLock 객체를 생성하고 Condition 객체를 생성하면 BoundedQueueV4 내부에 또 다른 락과 스레드 대기 공간이 생성 되는건가요?
-
해결됨김영한의 실전 자바 - 중급 1편
멤버B의 주소 바꿔주는 방법에 관한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의중에 나온 이부분에 관해 질문이 있습니다.memberB.getAddress().setValue("부산");memberB.setAddress(new ImmutableAddress("부산"));여기서, 멤버B의 주소를 바꿔 줄때,memberB.getAddress().setValue("부산"); 를 하셨는데, 그냥 memberB.setValue("부산"); 라고 하면 안돼는 이유가 무엇인지 너무 궁금 합니다
-
미해결김영한의 실전 자바 - 중급 1편
어떤건 String.join이고 어떤건 str.split이렇게 하는데 어떻게 외우나요
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]자바 코테 준비하는데 위 함수들을 외우는 꿀팁같은거 없나요?
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
정적 팩토리 메소드 사용 이유
강의를 듣다가 갑자기 드는 질문이 있습니다.생성자를 private로 감추고 정적 팩토리 메소드를 사용해서 of나 from 이런식으로 만드시는데 왜 이렇게 하시는지 궁금합니다.정적 팩토리 메서드는 메서드 이름을 통해 생성의 의도를 명확히 전달할 수 있다고 하는데, 이것말고 또 사용 이유가 있으실까요 ??
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
클래스 객체에 대해서 궁금한 것이 있습니다.
클래스 객체 사용 X클래스 객체 사용 O 먼저 결론적으로 말씀드리면 제품의 정보를 일일이 정의한 것과 클래스 객체를 통해 코드를 작성한 것의 차이를 잘 모르겠습니다.제가 챕터 7의 1번째 강의를 중에서 블랙박스의 정보는 이보다 실제로 많기 때문에 이 모든 것을 일일이 정의한다면 코드가 방대해 진다고 들었습니다. 그런데 제가 실습하고 나서 코드를 살펴보니 클래스 객체에 대한 필요성을 느끼지 못하였습니다. 알려주신다면 감사하겠습니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
notify() 호출 후의 상황에 대해 질문 있습니다.
@Override public synchronized void put(String data) { while (queue.size() == max) { log("[put] 큐가 가득 참, 생산자 대기"); try { wait(); // RUNNABLE -> WAITING, 락 반납 log("[put] 생산자 깨어남"); } catch (InterruptedException e) { throw new RuntimeException(e); } } queue.offer(data); log("[put] 생산자 데이터 저장, notify() 호출"); notify(); // 대기 스레드, WAIT -> BLOCKED }생산자 스레드가 먼저 실행되면 마지막 스레드는 wait() 호출 후 스레드 대기 집합에서 관리 되는걸로 이해했습니다.이 상태에서 소비자 스레드가 실행되면 데이터를 처리하고 마지막에 notify()를 호출하면 스레드 대기 집합에서 관리 되던 생산자 스레드가 깨어날텐대 여기서 wait(); 바로 다음 코드를 실행하지 않고 바로 BLOCKED 상태가 되는건가요?BLOCKED 상태에 있다가 소비자 스레드가 락을 반납 했을때 BLOCKED 상태가 풀리면서 wait() 바로 다음 코드를 실행한다고 이해하면 될까요?
-
미해결스프링 핵심 원리 - 기본편
@PostConstruct 사용시 @ComponentScan 으로 구현
1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서 @Configuration 과 @Bean을 사용하여 초기화, 소멸 라이프사이클을 보았는데 강의에선 구현하진 않았지만 @ComponentScan으로 사용해보고 싶어서 NetworkClient에 @Component를 달고 LifeCycleConfig를 @ComponentScan 을 달아 사용해볼려고하였습니다. 근데 AnnotationConfigApplicationContext 사용하여 빈등록할시 저희가 의도했던 @PostConstruct 시점이 setUrl하기전에 불러와지는거같아 Null 값이 나오는데 ComponentScan사용시 setUrl 위치나 타이밍을 알고싶습니다
-
미해결김영한의 실전 자바 - 기본편
급히 자바, 스프링부트를 실무에 사용해야한다면
안녕하세요 실무에서 자바, 스프링부트를 하게된 프론트엔드 개발자입니다. 급히 자바, 스프링을 막듣고있는데 로드맵을 물론 다들으면좋겟지만너무많고, 실무에서 사용이필요해서 혹시 꼭들어야한다면 몇가지 추려서 추천해주실강의들이있나요 ? 지금 자바 입문, 기본, 중급1 듣고있습니다.
-
미해결김영한의 실전 자바 - 기본편
result = pay.pay(amount); 이건 할당하는 코드가 아닌가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]result에 할당후 실행 하는 코드가 없는데 바로 pay.pay가 실행되는 원리를 모르겠습니다.. 아니면 원래 할당과 실행이 동시에 일어나는건가요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
oracle jdk 23
oracle jdk 23을 설치하여 사용중입니다. 강의따라가는데 크게 문제 없을까요??
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
생성한 java-start 프로젝트가 프로젝트 폴더에 보이지 않아요
강사님의 말에 맞춰 java-start 프로젝트를 생성하였습니다만 아래 그림과 같이 프로젝트 폴더에 External Libraries와 Scratches and Consoles만 보이고 java-start 프로젝트가 보이지 않게 됐습니다. 어떻게 해결할 수 있을까요?프로젝트 생성 시 설정은 다음과 같습니다:Build System: IntelliJJDK: 18 Oracle OpenJDK 18.0.1 - aarch64 (M1 Mac입니다)
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
게터
안녕하세요 강의 잘 보고 있습니다 게터에 대해 질문이 있어서 그런데 그럼 선생님께서는 실무에서 @Getter은 사용하지 않으시고 필드 하나하나 9분 36초처럼 수동으로 다 만드시나요?? 안쓰자니 코드의 양이 많아지고 쓰자니 코드의 양이 많아져 약간?은 복잡해 질 수도 있고... 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
스프링 핵심원리 기본편 프로그램 Source Down 문의
안녕하세요..스프링핵심원리 기본편 학습중 입니다.강의자료에 PDF 파일은 제공이 되는데 프로그램 Source 는 제공이 되지 않나요 ?프로그램 Source 는 다운 받을수 없나요 ? 확인 부탁드려요.감사합니다.
-
미해결스프링 핵심 원리 - 기본편
@Component 달때 rateDiscountPolicy에는 안다는이유
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) ㅇ[질문 내용]@Component 어노테이션사용하여 자동 빈등록을할때 8:30에서 설명하듯이 rateDiscountPolicy에는 @Component는 달고fixDiscountPolicy 클래스에는 안다는 이유가 궁금합니다.빈을 등록할때 fix와 rate중 사용할려는 정책은 rat이기때문에 중복해서 빈으로 등록하지않는거라고 생각하면될까요? 추후 fix로도 쓸수있을텐데 빈으로 등록안하는 이유가 궁금합니다