묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 기본편
객체 향상된 for문 질문있습니다.
package class1.ex; public class MovieReviewMain2 { public static void main(String[] args) { MovieReview[] reviews = new MovieReview[2]; MovieReview inception = new MovieReview(); inception.title = "인셉션"; inception.review = "인생은 무한 루프"; reviews[0] = inception; MovieReview aboutTime = new MovieReview(); aboutTime.title = "어바웃 타임"; aboutTime.review = "인생 시간 영화"; reviews[1] = aboutTime; for (MovieReview review : reviews) { System.out.println("영화 제목: " + review.title + ", 리뷰: " + review.review); } } }MovieReview inception이라는 변수를 통해서 .(dot)으로 실제객체에 접근하는 것으로 알고 있습니다. 그러나, 향상된 for문에서는 MovieReview(클래스) 다음에 오는 review를 통해서 접근하여 영화제목과 리뷰를 출력하는 것으로 보입니다.여기서 질문이 있습니다.for(MovieReview review : reviews)이 구문에서 review는 어디서 온것인가요?review가 참조값에 접근할 수 있는 상세한 이유는 무엇일까요?답변부탁드립니다!
-
해결됨김영한의 실전 자바 - 기본편
개인적으로 궁금한건데 선생님 키보드 정보가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.키보드 정보가 궁금합니다. 현재 맥북으로 공부중인데, 맥북과 호환되는 키보드 정보가 궁금합니다
-
미해결스프링 핵심 원리 - 기본편
coreapplication 실행시 로그
coreapplication 실행시 콘솔창에 이렇게 debug 로그들이 많이 뜨는데 강의 영상 1:26 처럼 INFO 로그들만 나오게 하려면 어떻게 해야 하나요?
-
미해결스프링 핵심 원리 - 기본편
@Autowired 필드 명, @Qualifier, @Primary 강의중인데요
@Component //@RequiredArgsConstructor public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy rateDiscountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = rateDiscountPolicy; } 2:50초 쯤에서 DiscountPolicy 의 변수를 rateDicountPolicy 로 변경을 하는 내용이 나오거든요 그리고 테스트를 돌리는데 성공하시더라구요 그런데 저는 여기서 아래에러가 발생해서요 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\kkk\Downloads\core\out\production\classes\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy매칭이 안된것 같은데 어떻게 해야 할지 문의 드립니다.
-
미해결스프링 핵심 원리 - 기본편
policyMap과 policies에 계속 null 값이 들어갑니다.
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. public class AllBeanTest { @Test void findAllBean() { 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, 10000, "fixDiscountPolicy"); assertThat(discountService).isInstanceOf((DiscountService.class)); assertThat(discountPrice).isEqualTo(1000); } 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); } } }@Component public class FixDiscountPolicy implements DiscountPolicy { private int discountFixAmount = 1000; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return discountFixAmount; } else { return 0; } } }@Component public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return price * discountPercent / 100; } else { return 0; } } }public interface DiscountPolicy { /** * * @return 할인 대상 금액 */ int discount(Member member, int price); }@Configuration @ComponentScan( basePackages = "spring.springCoreBasic.member", excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) public class AutoAppConfig { }
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
제네릭스가 실제로 쓰이는 예시
sts로 mvc 하다가 다시 강의듣기 시작해서 그런지 헷갈려서요. 제네릭스는 어느 경우에 쓰이는 건가요? 프로젝트 할때 HashMap을 썼던 것 같거든요. Controller - jsp (ajax)@ResponseBody@PostMapping("/admin/bmember")public Map<String, Object> bmemberPost(@RequestBody ManagerVO manager){ Map<String, Object> map = new HashMap<String, Object>(); boolean res = managerService.updateManager(manager); // 승인 -> 업데이트 -> bm_approval( 0 -> 1 ) // 동시에 getMakeStore 를 하면서 st_num을 만들고, bm_id값만 넘겨주고, st_approval default값 0이 주어짐 -> storeVO 데이터 저장! boolean store = storeService.makeStore(manager); // 상점등록 - (st_num) st_bm_id를 이용해서 insert // => 매장등록 (plusinfo) insert -> update 로 변경. // map.put("store", store); // 화면단에 store정보를 보낼 필요는 없음. 그냥 일만하러 왔다. map.put("res", res); return map; }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
변수가 초기화 되었는지 확인하는게 JIT컴파일러 인가요?
변수가 초기화 되었는지 확인하는게 JIT컴파일러 인가요?
-
미해결스프링 핵심 원리 - 기본편
강좌 : 프로토타입스코프
강좌 : 프로토타입스코프 9분에서싱글톤이랑 프로토타입을 같이 사용하지 말라는건 알겠는데 혹시 클라이언트빈과 싱글톤을 같이 사용하지 말라는건가요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
while문 문제와 풀이 질문입니다(짝수 출력)
안녕하세요~이렇게 코드를 짜면 값이 안나오는데 왜일까요?num을 1로 했더니 결과가 안나와서 찾아보니int가 정수 라서 실행이 안된다길래int를 2로 잡고 돌렸는데도 값이 2만 나옵니다.뭐가 문제인가요? 그리고 코드를 이렇게 짰는데값은 강의 내용과 동일하게 나옵니다.강의에서는 num과 count 두 변수를 이용하던데이유가 있나요?코딩 강의 처음 들어보는 초보자라왕초보 기준으로 설명해주실 수 있을까요😔
-
미해결김영한의 실전 자바 - 기본편
객체를 따로 생성해주는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ProductOrderMain2package ref.ex; public class ProductOrderMain2 { public static void main(String[] args) { ProductOrder[] orders = new ProductOrder[3]; orders[0] = createOrder("두부", 2000, 2); orders[1] = createOrder("김치", 5000, 1); orders[2] = createOrder("콜라", 1500, 2); printOrders(orders); int totalAmount = getTotalAmount(orders); System.out.println("총 결제 금액: " + totalAmount); } static ProductOrder createOrder(String productName, int price, int quantity) { ProductOrder order = new ProductOrder(); order.productName = productName; order.price = price; order.quantity = quantity; return order; } static void printOrders(ProductOrder[] orders) { for (ProductOrder order : orders) { System.out.println("상품명: " + order.productName + ", 가격: " + order.price + ", 수량: " + order.quantity); } } static int getTotalAmount(ProductOrder[] orders) { int totalAmount = 0; for (ProductOrder order : orders) { totalAmount += order.price * order.quantity; } return totalAmount; } }왜 ProductOrder order = new ProductOrder();을 통하여 객체를 새로 생성 해주는지 궁금합니다.ProductOrder[] orders = new ProductOrder[3];를 통해 배열을 만들었고, 배열도 객체라고 기억하고 있습니다.위에서 배열(객체)를 만들었는데 왜 객체를 또 만들어주나요?배열은 객체의 참조값만 저장이 되기 때문에 객체를 따로 생성해서 따로 생성한 객체에 값을 넣어줘야하기 때문이라고 이해했는데, 제가 이해한 내용이 맞을까요?
-
미해결김영한의 실전 자바 - 기본편
[method] static vs public static
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.참조형과 메서드 호출 강의를 듣다 궁금점이 생겨서 문의 남깁니다.MethodChange2.javapackage ref; public class MethodChange2 { public static void main(String[] args) { Data dataA = new Data(); dataA.value = 10; System.out.println("메서드 호출 전: dataA.value = " + dataA.value); changeReference(dataA); System.out.println("메서드 호출 후: dataA.value = " + dataA.value); } private static void changeReference(Data dataX) { dataX.value = 20; } Method2.javapackage ref; public class Method2 { public static void main(String[] args) { Student student1 = createStudent("학생1", 15, 90); Student student2 = createStudent("학생2", 16, 80); printStudent(student1); printStudent(student2); } static Student createStudent(String name, int age, int grade) { Student student = new Student(); student.name = name; student.age = age; student.grade = grade; return student; } static void printStudent(Student student1) { System.out.println("이름:" + student1.name + " 나이:" + student1.age + " 성적:" + student1.grade); } } MethodChange2의 changeReference 메소드는 private static인데, 왜 Method2의 printStudent 메소드는 static인지 이유가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
MemberApp에서 Bean에서 불러오는 과정에서 스프링으로 실행이 안되는 것 같아 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Spring Bean이란 정확이 어떤 개념인가요?제가 이해한 Bean은 스프링 컨테이너가 관리해주는 하나의 객체 or 클래스 라고 이해했는데. 영한님 강의에서 본 것 과 같이 스프링 컨테이너란 객체를 생성해서 의존성을 주입해주는것, 생명주기관리 등을 담당하는것이며 빈은 스프링 컨테이너에 의해 관리 당하는 객체인가요? 빈에 대해 이해하고싶습니다. 영한님 강의를 듣고 똑같이 구현결과 제 컴파일러에서는 Bean과 관련된 로그가 안뜹니다https://drive.google.com/file/d/1_Wm8yj0VdLKFo-JI6aNlBo67jN2ctb1U/view?usp=drive_link강의를 듣는 중에 똑같이 실행을 했는데 빈에서 불러오는 로그가 뜨지 않아서 괜찮은건지 질문드립니다. MemberApp과 OrderApp둘 다 동일한 증상이 나타납니다. 인텔리제이를 사용하지 않는 이유는 군대 사지방이라 깔지를 못합니다..ㅜ @Bean(name="otherName")이렇게 해서 Run해보면 오류가 나서 Bean으로 잘 된 것 같은데 혹시 몰라서 질문 드립니다.
-
미해결김영한의 실전 자바 - 기본편
상속 관련해서 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다형성 오버라이딩 까지 강의를 보고 질문 드립니다.지금까지 상속 관계에 대해 배웠을 때처음에 든 생각은 상속이 tree 관계도를 만든다고 생각했습니다.(예를 들어서 부모에게 자식이 여러 명 있을 수 있는 것처럼요)그런데 수업에서 배운 내용을 보니힙 영역에서 한 인스턴스 안에 부모가 한 명 있고 자식이 둘 이상인 경우는 존재하지 않는 것처럼 보였습니다.물론 class 영역에서 한 부모를 여러 자식이 상속하는 경우는 가능하겠지만 instance를 만들 때는 자식 인스턴스를 만들 때마다 부모가 복제되서 생기는 것 같았습니다. 매소드 오버라이딩 부분을 보니까 한 인스턴스 안에 부모가 있을 때 자식이 여럿 있으면 안 될 것 같다는 확신이 들었습니다. 그게 맞다면 어느 자식의 method로 오버라이딩 되어야 할 지 정하기 어렵기 때문입니다. 만약 제가 데이터를 저장할 때어떤 사람의 인적 정보를 person class에 저장하고사람의 직업이 여러 개일 수 있으니까 직업들을 job1, job2 class라고 정의한다면-----------------------------------| person 부모class - job 1 자식 class | - job 2 자식 class-----------------------------------이런 식으로 한 인스턴스 안에 데이터를 저장하는 것이 메모리를 효율적으로 쓰는 것이라고 생각했는데 java는 이런 걸 지원하지 않는 것처럼 보였습니다. 제 생각이 맞는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
@PostConstruct어노테이션의 초기화 콜백 메서드에 대해서 확답이 필요합니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요!초기화 콜백에 관한 강의를 듣고 정리해본 결과 지금 예제에서는 외부에서 주입 받는 객체가 없기 때문에 의존성 주입은 없고 url필드의 값 주입만 있는 것 같습니다.그런데 @PostConstruct 어노테이션의 역할은 설정 정보에 있는 빈 객체가 생성되고, 빈 간에 의존성이 모두 주입된 직후 실행될 초기화 콜백 메서드를 지정하는 것이라고 이해했습니다.이때 예제에서처럼 실질적으로 의존성이 존재하지 않아도 해당 어노테이션이 붙어있는 메서드가 있다면, 빈 생성 후 필드 값 주입을 마치고 똑같이 초기화 콜백을 수행하는 것이 맞나요?그리고 @PostConstruct어노테이션의 쓰임으로는 어떠한 의존성이나 필드에 대해서 생성자로 초기화하기 까다롭거나 적절하지 않을 때, 혹은 그래야만 하는 상황에(앞서 생성자를 통해 의존성을 주입받아야만 사용할 수 있는 의존성(필드)일 때) 추가적으로 초기화하기 위해 사용하는 걸로 이해해도 될까요?
-
해결됨스프링 핵심 원리 - 기본편
Test Results 만 뜹니다.
안녕하세요. 현재 스프링 부트 3.2.0을 사용하고 있고요,pdf를 보고 주의 주신 대로 Gradle로 맞추었는데요 강사님처럼 이렇게 하위로 테스트가 개별 통과되었는지 보이지 않고,저는 위와 같이 Test Results만 뜨는 상황인데요..! 개별 메서드도 확인할 수 있게 바꿀 방법이 없을까요..?ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
@Autowired 필드명 매칭
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]필드명을 변경해서도 fixDiscountPolicy랑 rateDiscountPolicy로 오류가 나왔습니다그래서 혹시나 해서 AutoAppConfige에 있는 excludeFilters까지 주석으로 처리하니 에러가 발생하지않았습니다왜 excludeFilters를 주석처리하니까 에러가 해결되었는지가 궁금합니다.해당 excludeFilter는 Configuration쪽을 자동등록하지않기 위함으로만 알고있습니다.package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; @Configuration // @Component가 들어가있는 대상을 빈으로 자동등록 @ComponentScan( // basePackages = "hello.core.member", // 해당 패키지의 위치부터 찾아가기 시작 / 지정하지않으면 라이브러리 포함 전부다를 뒤지게 된다 // basePackageClasses = AutoAppConfig.class, // 지정한 클래스의 패키지부터 지정하지않으면 해당 클래스의 package가 시작위치 // excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) // Configuration.class는 자동등록을 제외시켜주는 부분 // Configuration은 현재 AppConfig에서 수동등록할 때 사용하고 있어서 // 자동등록시 포함하면, 에러가 발생하거나 꼬일수있다. ) // 자동으로 등록하기 위해서 필요 public class AutoAppConfig { }
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
문제와 풀이3 - productAdminEx 문제 질문입니다.
package inflearn.array.ex; import java.util.Scanner; public class ProductAdminEx { public static void main(String[] args) { // 상품 관리 프로그램 만들기 -> 처음에 for문으로 구성했으나 null 출력이 많은듯... int maxNumber = 10; String[] productNames = new String[maxNumber]; int[] productPrices = new int[maxNumber]; int productCount = 0; Scanner scanner = new Scanner(System.in); for (int i = 0; i < 10; i++) { System.out.println("1. 상품 등록 | 2. 상품 목록 | 3. 종료"); System.out.print("메뉴를 선택하세요: "); int menu = scanner.nextInt(); scanner.nextLine(); if (menu == 1) { if (productCount > 10) { System.out.println("더 이상 상품을 등록할 수 없습니다."); } System.out.print("상품 이름을 입력하세요: "); productNames[i] = scanner.nextLine(); System.out.print("상품 가격을 입력하세요: "); productPrices[i] = scanner.nextInt(); productCount++; } else if (menu == 2) { if (productCount == 0) { System.out.println("등록된 상품이 없습니다."); continue; } else { System.out.println(productNames[i]); } for (int j = 0; j < productCount; j++) { System.out.println(productNames[j] + ": " + productPrices[j] + "원"); } } else { System.out.println("프로그램을 종료합니다"); break; } } } }이렇게 for문을 썼을 때, 상품을 등록하고 2번 프로그램 목록보기를 선택하면 null 이 섞여나오는데 이유를 알고 싶습니다!강의에서는 while문을 통한 무한루프를 사용하였는데 for문으로도 풀어보다 궁금해서 질문 올립니다!=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨스프링 핵심 원리 - 기본편
@Autowired 필드 명, @Qualifier, @Primary 강의중 질문드립니다.
안녕하세요. 강의를 들으면서 라이브 코딩을 하며 오류가 계속 발생해 문의드립니다.@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository,DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @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); } //테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; } }@Component @Primary public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return price * discountPercent / 100; } else { return 0; } } }@Component public class FixDiscountPolicy implements DiscountPolicy { private int discountFixAmount = 1000; //1000원 할인 @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return discountFixAmount; } else { return 0; } } } 이렇게 작성이 되어있지만 AutoConfigTest에서 NoSuchBeanDefinitionException 가 발생해 문의드립니다.public class AutoAppConfigTest { @Test void basicScan() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); MemberService memberService = ac.getBean(MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); OrderServiceImpl bean = ac.getBean(OrderServiceImpl.class); MemberRepository memberRepository = bean.getMemberRepository(); System.out.println("memberRepository = " + memberRepository); } } org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.order.OrderServiceImpl' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:341) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:332) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1191) at hello.core.scan.AutoAppConfigTest.basicScan(AutoAppConfigTest.java:24) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
-
해결됨김영한의 실전 자바 - 기본편
다형성 질문입니다
Parent parent = new child(); 라고하면 parent가 child의 기능을 가질수 있다는건데,new child()는 child()의 객체의 참조값을 가지니까 parent가 접근할수있다는것을 이해했는데parent는 생성자를 안만들어줬는데도 접근할수가있나요? Parent parent = new Parent(); 같이 객체를 만들어줬을때 저장이되면서 참조값을 parent에 전달한다고 알고있는데 Parent parent = new child(); 는 child의 참조값만 알고 Parent는 모르는거아닌가요? 상속이라고해도 parent는 객체를 안만들어줬지 않나요?
-
미해결스프링 핵심 원리 - 기본편
store를 Map으로 지정한 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요.MemoryMemberRepository에 있는 private static Map<Long, Member> store = new HashMap<>(); @Override public void save(Member member) { store.put(member.getId(), member); }이 부분에 대해 질문사항이 있습니다.Member에는 id, name, grade의 필드가 있고, 예를 들면 (1L, "memberA", Grade.VIP)의 형식으로 저장이 될 것인데, 굳이 store를 Map형식으로 선언하여서, save메서드에서 store.put(member.getId(), member)의 형식으로 저장하는 이유가 무엇인가요? 요약하자면Member에는 id, name, grade의 정보가 있는데 굳이 save메서드에서 member.getId()를 통해 id를 한 번 꺼내고, member와 같이 굳이 키와 쌍의 값으로 저장을 하는 이유가 궁금합니다. 그저 member만 저장하면 되므로 Map을 쓸 필요가 없지 않나 라는 의문점이 듭니다. Map을 쓴다고 하였을 때, Map의 구현체들 중에서 HashMap을 사용한 이유가 궁금합니다.