학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] equals는 매개변수를 받으면 -> User2 클래스로 변환 (다운캐스팅) -> 만들어진 User2객체에서 id 추출 -> 그걸 User2 id와 비교 정리하면 들어온 Object를 User2로 바꾸어 id를 확인하는 메서드인데 User2를 User2로 다운캐스팅하여 User2와 비교 후 User1 과 비교하는 로직 아닌가요? 어느부분이 잘못된건지 모르겠습니다ㅜㅜ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의를 듣다가 질문이 생겨서 질문을 남깁니다. 마지막에서 잘못된 타입의 인수를 전달할 때 해결 방법으로 instance-of가 생각나더라고요. 근데 이 방법이 있어도 안 한 이유가, IntegrBox랑 ObjectBox랑 대조 설명 하시면서, 코드의 재사용성, 코드의 안정성을 말씀하시던데, instance-of를 하게 되면(클래스를 만들든 메서드로 만들든) 타입마다 계속 비교해서 코드가 한없이 길어지기 때문에, 코드의 재사용X 이기 때문에 안 하신건가요? 추가1 아니면 다른 이유가 있는 것 인가요? 답변 부탁 드립니다.
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. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의중에 나온 이부분에 관해 질문이 있습니다. memberB.getAddress().setValue("부산"); memberB.setAddress(new ImmutableAddress("부산")); 여기서, 멤버B의 주소를 바꿔 줄때, memberB.getAddress().setValue("부산"); 를 하셨는데, 그냥 memberB.setValue("부산"); 라고 하면 안돼는 이유가 무엇인지 너무 궁금 합니다
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 자바 코테 준비하는데 위 함수들을 외우는 꿀팁같은거 없나요?
강의를 듣다가 갑자기 드는 질문이 있습니다. 생성자를 private로 감추고 정적 팩토리 메소드를 사용해서 of나 from 이런식으로 만드시는데 왜 이렇게 하시는지 궁금합니다. 정적 팩토리 메서드는 메서드 이름을 통해 생성의 의도를 명확히 전달할 수 있다고 하는데, 이것말고 또 사용 이유가 있으실까요 ??
클래스 객체 사용 X 클래스 객체 사용 O 먼저 결론적으로 말씀드리면 제품의 정보를 일일이 정의한 것과 클래스 객체를 통해 코드를 작성한 것의 차이를 잘 모르겠습니다. 제가 챕터 7의 1번째 강의를 중에서 블랙박스의 정보는 이보다 실제로 많기 때문에 이 모든 것을 일일이 정의한다면 코드가 방대해 진다고 들었습니다. 그런데 제가 실습하고 나서 코드를 살펴보니 클래스 객체에 대한 필요성을 느끼지 못하였습니다. 알려주신다면 감사하겠습니다.
@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() 바로 다음 코드를 실행한다고 이해하면 될까요?
1. 강의 내용과 관련된 질문인가요?예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 강의에서 @Configuration 과 @Bean을 사용하여 초기화, 소멸 라이프사이클을 보았는데 강의에선 구현하진 않았지만 @ComponentScan으로 사용해보고 싶어서 NetworkClient에 @Component를 달고 LifeCycleConfig를 @ComponentScan 을 달아 사용해볼려고하였습니다. 근데 AnnotationConfigApplicationContext 사용하여 빈등록할시 저희가 의도했던 @PostConstruct 시점이 setUrl하기전에 불러와지는거같아 Null 값이 나오는데 ComponentScan사용시 setUrl 위치나 타이밍을 알고싶습니다
안녕하세요 실무에서 자바, 스프링부트 를 하게된 프론트엔드 개발자입니다. 급히 자바, 스프링을 막듣고있는데 로드맵을 물론 다들으면좋겟지만 너무많고, 실무에서 사용이필요해서 혹시 꼭들어야한다면 몇가지 추려서 추천해주실강의들이있나요 ? 지금 자바 입문, 기본, 중급1 듣고있습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] result에 할당후 실행 하는 코드가 없는데 바로 pay.pay 가 실행되는 원리를 모르겠습니다.. 아니면 원래 할당과 실행이 동시에 일어나는건가요?
강사님의 말에 맞춰 java-start 프로젝트를 생성하였습니다만 아래 그림과 같이 프로젝트 폴더에 External Libraries와 Scratches and Consoles만 보이고 java-start 프로젝트가 보이지 않게 됐습니다. 어떻게 해결할 수 있을까요? 프로젝트 생성 시 설정은 다음과 같습니다: Build System: IntelliJ JDK: 18 Oracle OpenJDK 18.0.1 - aarch64 (M1 Mac입니다)
안녕하세요 강의 잘 보고 있습니다 게터에 대해 질문이 있어서 그런데 그럼 선생님께서는 실무에서 @Getter은 사용하지 않으시고 필드 하나하나 9분 36초처럼 수동으로 다 만드시나요?? 안쓰자니 코드의 양이 많아지고 쓰자니 코드의 양이 많아져 약간?은 복잡해 질 수도 있고... 감사합니다.
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) ㅇ [질문 내용] @Component 어노테이션사용하여 자동 빈등록을할때 8:30에서 설명하듯이 rateDiscountPolicy에는 @Component는 달고 fixDiscountPolicy 클래스에는 안다는 이유가 궁금합니다. 빈을 등록할때 fix와 rate중 사용할려는 정책은 rat이기때문에 중복해서 빈으로 등록하지않는거라고 생각하면될까요? 추후 fix로도 쓸수있을텐데 빈으로 등록안하는 이유가 궁금합니다