묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
CoreApplication 실행 오류
CoreApplication 실행시 다음과 같은 오류가 발생합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
함수 설계 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]안녕하세요 다음과같이 함수 내부에서 입금,출금액을 입력받도록 설계하는것 보다 영한님처럼 외부에서 입력받고 인자로 넘기는 방식이 더 좋은 방식인가요?
-
미해결김영한의 실전 자바 - 기본편
인스턴스 생성
여기서 학생 이름, 나이, 성적 각각을 객체(인스턴스)라고 하는 건가요, 아니면 이 세개를 합친 student1을 하나의 객체(인스턴스)라고 하는 건가요? 혹은 전부 다 객체(인스턴스)라고 할 수 있는 건가요?
-
해결됨스프링 핵심 원리 - 기본편
강의. 조회된빈이 모두필요할떄 List,map 제목입니다
public class AllBeanTest { @Test void finaAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); int discountPrice = discountService.discount(member, 1000, "fixDiscountPolicy"); assertThat(discountService).isInstanceOf(DiscountService.class); assertThat(discountPrice).isEqualTo(1000); int rateDiscountPrice = discountService.discount(member, 20000, "rateDiscountPolicy"); assertThat(rateDiscountPrice).isEqualTo(2000); } static class DiscountService { private final Map<String, DiscountPolicy> policyMap; private final List<DiscountPolicy> policies; @Autowired // 생략가능 생성자가 하나이기 때문에!!! public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policies) { this.policyMap = policyMap; this.policies = policies; System.out.println("policyMap = " + policyMap); System.out.println("policies = " + policies); } public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); } } } 첫번째 질문, AnnotationConfigApplicationContext을 해주게되면 스프링컨테이너로 등록을하고 ac를 통해 빈으로 등록된 AutoAppconfig.class와 DiscountService.class에 접근이 가능하다고 알고있습니다.밑에보면 ac로 DiscountService.class에만 접근하고있어서 AutoAppconfig.class를 빼주었더니 밑에있는 discountprice에 discout에서 오류가 발생합니다. 이유가 무엇일까요? 두번째 질문, 밑에 DiscountService에 강의에서 생성자를 선언해주었습니다. 지금보면 어디에서 호출이되었는지와 어떻게 값을 넣어주었는지 궁금합니다. 제생각에는 AnntationConfigApplicationContext를 할때API문서를 보니 refresh()의 finishBeanFactoryInitialization(beanFactory); 에서 AutoAppConfig.class, DiscountService.class 에 대한 값을 이미 생성되었다고 판단되었는데 이게맞을까요? 이게맞다면 1번질문이 결국 2번질문과 연관되어있을거같습니다 세번째 질문, map에 대해 공부를해봤는데 map<String, DiscountPolicy> 에서 만약 AutoAppconfig 가 들어가있다면 this.policyMap에는 AutoAppconfig가 들어가있는 상태이고 AutoAppconfig를 들여다보니 ComponentScan이 있어서 Component로 등록되어있는 RateDiscountPolicy, FixDiscountPolicy에 매개변수로 들어온 discountCode로 접근이 가능하다가 맞을꺼같은데 제가 이해한게맞을까요?
-
미해결스프링 핵심 원리 - 기본편
빌드하면 나오는 화면 질문
평소 보던 결과랑 다르게 나오는데 저에게 무슨일이 생긴걸까요? 강의랑 같은 결과화면을 얻고싶습니다!이 부분이 강의와 다르게 나타나는 이유가 무엇일까요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
[질의] 7-3.Scanner_반복예제(5'54) 질문
안녕하세요 선생님 7-3.Scanner_반복예제(5분 54초경) 질문이 있습니다.선생님께서 작성하신 코드에 따르면 int구문을 if와 구별하여 작성해주신 것으로 확인했습니다. 저는 이와 다르게 하기와 같이 구현하였는데 이렇게 진행해도 무방할까요?Scanner scanner = new Scanner(System.in); System.out.println("첫번쨰와 두번째 숫자 모두 0을 입력하면 프로그램을 종료합니다."); while (true) { System.out.print("첫번쨰 숫자를 입력하세요 : "); int num1 = scanner.nextInt(); System.out.print("두번쨰 숫자를 입력하세요 : "); int num2 = scanner.nextInt(); if (num1 == 0 && num2 == 0) { System.out.println("프로그램을 종료합니다."); break; } else { int sum = num1 + num2; System.out.println("두 숫자의 합은 ? = " + sum); }
-
미해결스프링 핵심 원리 - 기본편
Provider 사용
package javax.inject; public interface Provider { T get(); } @Autowired private Provider<PrototypeBean> provider; public int logic() { PrototypeBean prototypeBean = provider.get();} Provider 인터페이스 사용시 위처럼 인터페이스를 구현한 구현체 없이도 사용이 가능한가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
brew search jdk 에러
안녕하세요 선생님 유튜브 파이썬 강의 듣고 만족해 유튜브 자바 강의도 듣고 있습니다. 그러나 맥북 jdk설치 과정부터 막혀 도저히 진도가 나가질 않습니다.지식인에 물어보고 gpt에 물어보고 아무리 인터넷을 찾아서 따라해봐도 계속 에러가 납니다... 심지어 여기 커뮤니티에서 다른 사람이 질문했던거 따라해도 다시 에러가 나요 ㅜㅜㅜㅜ 다시 다 지우고 처음부터 해봤는데도 안되네요brew search jdk 이 과정만 입력하면 계속 같은 에러가 뜨네요..진짜 컴맹 코딩생초보라ㅜㅜ 어떻게 해야될지 모르겠어서 선생님께 직접 자문을 구하고자 결국 수강료 내고 여쭤봅니다... 자세하고 친절한 설명 부탁드립니다.. 번거롭게 해드려 죄송해요ㅜ
-
해결됨김영한의 실전 자바 - 기본편
밑의 참조 배열에 관한 질문 답변에 조금.. 이해가 안가서 다시 질문해요 ㅠㅠ.
이런식으로 Product라는 클래스를 만들고 컬렉션을 이용해서 products 변수를 만들어서 그 안의 객체를 생성해서 넣었습니다.그리고 또 다른 productTest라는 변수를 만들어서 이번에 products의 값들을 new ArrayList를 통해서 값을 전달했다고 한다면productTest의 배열의 첫번째 인덱스 값이 products의 첫번째 인덱스 값을 가리키는 것과 같은거 아닌가요? 그렇게 된다면 productTest에서 값을 수정한다면 원본 데이터 값에도 영향을 받아야 하므로 products.get(0).getName() 값도 결국 "테스트제품"으로 바꿔져야 하는데 원본 데이터는 영향을 받지 않더라구요... ㅠㅠ왜 이런건지 잘 모르겠습니다..참조 배열 안에 있는 값도 결국 객체의 메모리 주소값을 가리키게 된다면, 새로운 배열을 만들어서 값을 복사해서 대입하게 되더라도 해당 객체를 가리키는 메모리 주소값을 접근하는 것이 하나 더 생기는거 아닌가요?
-
해결됨김영한의 실전 자바 - 기본편
참조형 배열에 관한 질문!!
이 강의에서 배운 내용을 토대로 참조형 배열에 관해 궁금한 점이 있습니다. 참조형 배열도 결국 배열 안에 메모리 주소값을 저장하여 인덱스를 통해 메모리 주소값에 접근하는 방식인가요?예를 들어서 List<Item> items = new ArrayList<>(); 이런 식으로 Item 타입을 가지는 items라는 배열을 생성했다라고 하면, 이 안에 인덱스 번호를 통해 배열 안의 위치에 접근하면 Item 객체에 관한 메모리 주소값이 있을테고, 이 메모리 주소값에 접근하는 방식인가요? 만약 List<Item> item = new ArrayList<>(); 배열 변수를 선언하고 배열 안에 값을 넣었다고 생각을 한다면, 강의에서 말했듯, " 자바는 항상 변수의 값을 복사해서 대입한다 " 라는 말이 있는데 여기서 궁금한게, 또 다른 새로운 배열을 만들어서 해당 item을 복사해서 넣는다고 한다면 즉, List<Item> anotherItem = new ArrayList<>(item);이런식으로 item 안에 값들을 anotherItem으로 새로운 배열을 만들어서 집어넣는다면, anotherItem 안에 값들을 수정해도 item에는 영향을 미치지 않나요? 만약 영향을 미치지 않는다면 왜 그런지 궁금합니다.결국 객체의 메모리 주소에 접근할텐데.. (너무 헷갈립니다 ㅠㅠ)
-
해결됨김영한의 실전 자바 - 기본편
섹션 8. final pdf 내용 중 오타 발견하여 제보합니다.
안녕하세요. 영한님!스프링 강의에 이어 자바 강의까지 정말 재미있게 듣고 있습니다! ㅎㅎ다름이 아니라 섹션 8 final > final 변수와 상수 1 에서 오타를 발견하여 제보합니다.값은 이 제거되어야 할 것 같습니다. 😄영한님 덕분에 자바 모르고 지나쳤던 부분에 대해 짚고 넘어갈 수 있었습니다. 이후 공개될 자바 중급, 고급편도 무척이나 기대되네요! ㅎㅎ 항상 감사합니다. 연말 마무리 잘하시고 새해 복 많이 받으세요 🧧
-
미해결김영한의 실전 자바 - 기본편
계좌 예제문제
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 7강 예제문제 scanner 넣어서 만들다가 컴파일 돌리면 Process finished with exit code 0 이런 에러가 떠서 질문드립니다 .. 에러 뜨는 곳은 없는데 어디가 잘못되어서 컴파일이 안되는지 궁금합니다 .. 감사합니다
-
미해결김영한의 실전 자바 - 기본편
다형성과 인스턴스 생성 관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 이번 강의를 들으며 다형성과 추상클래스, 인터페이스 개념적인 부분 관련해서 이해가 잘 되었습니다.그런데 다형성 관련부분 들을때부터 의문이 들었던.. 메인 쪽에서 인스턴스 생성 부분이 이해가 가지 않아 질문 드립니다. 왜 InterfaceA a = new child() ; 처럼인스턴스를 생성해서 써야 하는건가요?Child a = new child() 로 생성해서메소드를 호출했을 때의 문제점이 뭔가요?문제점 보다는 코드 중복제거와 같은 효율성 때문인가요? 위의 인스턴스 대로라면,부모클래스의 메소드를 찾아서 해당 메소드가 자식 클래스에 있다면 자식 클래스를 우선 호출하거나, 부모클래스가 추상이나 인터페이스라면 오버라이딩 된 자식 클래스의 메소드를 호출할텐데, 인스턴스 생성시부터 부모 a = new 자식 으로왜 생성하는지가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
CoreApplication에 대한 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.CoreApplication의 @SpringBootAplication에는 @ComponentScan이 들어있다고 하셨습니다.그러면 스프링 빈 등록을 할 때 AutoAppConfig가 아니라 CoreApplication을 써도 될 것 같다는 생각이 들었습니다.그래서 방금 테스트한 코드를 이렇게 수정해보았습니다.public class AutoAppConfigTest { @Test void basicScan() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(CoreApplication.class); MemberService memberService = ac.getBean(MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); }}하지만 제가 @Component를 사용하지 않은 MemberService 도 같이 bean으로 등록되어 있어서 NoUniqueBeanDefinitionException이 발생했습니다. 왜 CoreApplicaion을 사용하면 이러한 오류가 나는 건지 궁금합니다. 그리고 이것이 AutoAppConfig의 역할을 대체할 수 있는지 궁금합니다
-
해결됨스프링 핵심 원리 - 기본편
Lombok testcode질문
Lombok설치이후 test를 전부 test했더니 오류코드가 발생합니다.. 어떤점이 잘못되었을까요? https://drive.google.com/file/d/1MuwBRL6nZkJ1fB3GokLDo3hEAufjOCHq/view?usp=sharing 또한 오류를 잡을때 아직 초보라그런지 어디에서 잡아야하고 어떤부분을 고쳐야하는지 감이오지를 않습니다 조언해주실수있으실까요?
-
해결됨스프링 핵심 원리 - 기본편
spring container 질문입니다
영한님 강의에 annotationconfigapplicationcontext이 스프링 컨테이너를 만들어주어 여기서 이제 관리한다고 알고있습니다.class OrderServiceImplTest { @Test void createOrder() { OrderServiceImpl orderService = new OrderServiceImpl(); orderService.createOrder(1L, "itemA", 10000); } } @Bean public OrderService orderService() { System.out.println("call AppConfig.orderService"); return new OrderServiceImpl(memberRepository(), discountPolicy()); // return null; }@Component public class OrderServiceImpl implements OrderService{ @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); } } 1 .여기 세개의 코드를 보면 첫번째에는 annotationconfigapplicationcontext 를 선언해주지않았는데 스프링컨테이너에 저장이될수있는건가요?Component는 클래스를 빈으로 등록해줘 ~ 라는느낌으로 알고있습니다. 첫번째코드를 실행시켰을때 두번째코드인 return new OrderServiceImpl(memberRepository(), discountPolicy()); 에서 에러가 발생합니다. 강의와 구글링을 검색했는데 @Component와 @Bean은 코드상의 유연함을 바탕으로 다르다고 알고있습니다. 왜 두번째에서 에러가나는지 궁금합니다
-
미해결김영한의 실전 자바 - 기본편
오타 제보 입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요."클래스가 필요한 이유" 강의중 코드작성때는int[] studentGrade = {} 로 작성하셨는데pdf 파일에는 int[] studentGrades ={} 로 작성 되어 있습니다..!
-
미해결스프링 핵심 원리 - 기본편
빈 중복 관련하여 질문이 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 일단 오류 로그는 이러한데 이 autowired를 통해 주입 받는 과정에서 @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; }@Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepository(); }이 수동 빈의 등록과 @Component public class MemoryMemberRepository implements MemberRepository{ private static Map<Long, Member> store = new HashMap<>(); @Override public void save(Member member) { store.put(member.getId(),member); } @Override public Member findById(Long memberId) { return store.get(memberId); } }이 자동 빈의 등록이 중복이 되어 MemberRepository의 빈을 조회하여 주입할 때 2개의 빈 중복으로 해당 오류가 발생하는 것으로 이해하였는데 gpt의 의견으로 @primary를 사용하면 해결이 되는걸 확인을 했습니다만처음에 타입으로 조회 한 이후에 여러 개의 빈이 조회 된다면 memberRepository의 이름인 빈이 선택되어 오류가 나지 않아야 하는 것이 아닌가 하여 이해가 되지 않아 질문 드립니다.감사합니다.
-
미해결김영한의 실전 자바 - 기본편
private static int count 인 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.강의 내용에서 편의를 위해서public class Data3 { public String name; public static int count; public Data3(String name) { this.name = name; count++; } }count를 public으로 선언후에 Data3 인스턴스를 만들어서Data3.count에 접근하는 방식은 이해했습니다. 실제로 사용시에는 아래처럼 getCount()를 만들어서 사용해야 할까요?public class Data3 { public String name; private static int count; public Data3(String name) { this.name = name; count++; } public int getCount() { return count; } } 아니면 더 좋은 사용방법이 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException 질문입니다
https://drive.google.com/file/d/1Ilyl5R3LPq0dH7d2lsg0cwKXXNzxQsjj/view?usp=sharing 강의 내용과 똑같이 코드를 따라했는데 Autowired로 했을때 오류가나네요 ㅠㅠㅠ 어떤게문제일까요?