inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

개인적으로 궁금한건데 선생님 키보드 정보가 궁금합니다

해결됨

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 키보드 정보가 궁금합니다. 현재 맥북으로 공부중인데, 맥북과 호환되는 키보드 정보가 궁금합니다

  • java
  • 객체지향
댓글 1 좋아요 1 조회수 698

coreapplication 실행시 로그

미해결

스프링 핵심 원리 - 기본편

coreapplication 실행시 콘솔창에 이렇게 debug 로그들이 많이 뜨는데 강의 영상 1:26 처럼 INFO 로그들만 나오게 하려면 어떻게 해야 하나요?

  • spring
  • 객체지향
roal 댓글 1 좋아요 0 조회수 640

@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 매칭이 안된것 같은데 어떻게 해야 할지 문의 드립니다.

  • spring
  • 객체지향
행복 댓글 1 좋아요 0 조회수 484

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 { }

  • spring
  • 객체지향
아가미 댓글 1 좋아요 0 조회수 569

제네릭스가 실제로 쓰이는 예시

미해결

나도코딩의 자바 기본편 - 풀코스 (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; }

  • java
  • 객체지향
hoje 댓글 1 좋아요 0 조회수 295

강좌 : 프로토타입스코프

미해결

스프링 핵심 원리 - 기본편

강좌 : 프로토타입스코프 9분에서 싱글톤이랑 프로토타입을 같이 사용하지 말라는건 알겠는데 혹시 클라이언트빈과 싱글톤을 같이 사용하지 말라는건가요?

  • spring
  • 객체지향
zzzzz 댓글 1 좋아요 0 조회수 164

while문 문제와 풀이 질문입니다(짝수 출력)

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

안녕하세요~ 이렇게 코드를 짜면 값이 안나오는데 왜일까요? num을 1로 했더니 결과가 안나와서 찾아보니 int가 정수 라서 실행이 안된다길래 int를 2로 잡고 돌렸는데도 값이 2만 나옵니다. 뭐가 문제인가요? 그리고 코드를 이렇게 짰는데 값은 강의 내용과 동일하게 나옵니다. 강의에서는 num과 count 두 변수를 이용하던데 이유가 있나요? 코딩 강의 처음 들어보는 초보자라 왕초보 기준으로 설명해주실 수 있을까요 😔

  • java
  • 객체지향
Ant 댓글 2 좋아요 0 조회수 531

객체를 따로 생성해주는 이유

미해결

김영한의 실전 자바 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] ProductOrderMain2 package 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];를 통해 배열을 만들었고, 배열도 객체라고 기억하고 있습니다. 위에서 배열(객체)를 만들었는데 왜 객체를 또 만들어주나요? 배열은 객체의 참조값만 저장이 되기 때문에 객체를 따로 생성해서 따로 생성한 객체에 값을 넣어줘야하기 때문이라고 이해했는데, 제가 이해한 내용이 맞을까요?

  • java
  • 객체지향
김은채 댓글 1 좋아요 2 조회수 2445

[method] static vs public static

미해결

김영한의 실전 자바 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 참조형과 메서드 호출 강의를 듣다 궁금점이 생겨서 문의 남깁니다. MethodChange2.java package 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.java package 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인지 이유가 궁금합니다.

  • java
  • 객체지향
김은채 댓글 1 좋아요 0 조회수 689

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으로 잘 된 것 같은데 혹시 몰라서 질문 드립니다.

  • spring
  • 객체지향
BubblingSODA 댓글 2 좋아요 2 조회수 1489

상속 관련해서 질문 있습니다.

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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는 이런 걸 지원하지 않는 것처럼 보였습니다. 제 생각이 맞는지 궁금합니다.

  • java
  • 객체지향
사차 댓글 1 좋아요 0 조회수 460

@PostConstruct어노테이션의 초기화 콜백 메서드에 대해서 확답이 필요합니다!

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요! 초기화 콜백에 관한 강의를 듣고 정리해본 결과 지금 예제에서는 외부에서 주입 받는 객체가 없기 때문에 의존성 주입은 없고 url필드의 값 주입만 있는 것 같습니다. 그런데 @PostConstruct 어노테이션의 역할은 설정 정보에 있는 빈 객체가 생성되고, 빈 간에 의존성이 모두 주입된 직후 실행될 초기화 콜백 메서드를 지정하는 것이라고 이해했습니다. 이때 예제에서처럼 실질적으로 의존성이 존재하지 않아도 해당 어노테이션이 붙어있는 메서드가 있다면, 빈 생성 후 필드 값 주입을 마치고 똑같이 초기화 콜백을 수행하는 것이 맞나요? 그리고 @PostConstruct어노테이션의 쓰임으로는 어떠한 의존성이나 필드에 대해서 생성자로 초기화하기 까다롭거나 적절하지 않을 때, 혹은 그래야만 하는 상황에(앞서 생성자를 통해 의존성을 주입받아야만 사용할 수 있는 의존성(필드)일 때) 추가적으로 초기화하기 위해 사용하는 걸로 이해해도 될까요?

  • spring
  • 객체지향
  • @postconstruct
한지호 댓글 1 좋아요 0 조회수 392

Test Results 만 뜹니다.

해결됨

스프링 핵심 원리 - 기본편

안녕하세요. 현재 스프링 부트 3.2.0을 사용하고 있고요, pdf를 보고 주의 주신 대로 Gradle로 맞추었는데요 강사님처럼 이렇게 하위로 테스트가 개별 통과되었는지 보이지 않고, 저는 위와 같이 Test Results만 뜨는 상황인데요..! 개별 메서드도 확인할 수 있게 바꿀 방법이 없을까요..?ㅠㅠ

  • spring
  • 객체지향
Clain 댓글 1 좋아요 0 조회수 167

@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 { }

  • spring
  • 객체지향
jay kang 댓글 1 좋아요 0 조회수 506

문제와 풀이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. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.

  • java
  • 객체지향
Banksy 댓글 1 좋아요 2 조회수 454

@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)

  • spring
  • 객체지향
수성강 댓글 1 좋아요 1 조회수 301

다형성 질문입니다

해결됨

김영한의 실전 자바 - 기본편

Parent parent = new child(); 라고하면 parent가 child의 기능을 가질수 있다는건데, new child()는 child()의 객체의 참조값을 가지니까 parent가 접근할수있다는것을 이해했는데 parent는 생성자를 안만들어줬는데도 접근할수가있나요? Parent parent = new Parent(); 같이 객체를 만들어줬을때 저장이되면서 참조값을 parent에 전달한다고 알고있는데 Parent parent = new child(); 는 child의 참조값만 알고 Parent는 모르는거아닌가요? 상속이라고해도 parent는 객체를 안만들어줬지 않나요?

  • java
  • 객체지향
박민성 댓글 1 좋아요 1 조회수 284

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을 사용한 이유가 궁금합니다.

  • spring
  • 객체지향
민기 댓글 1 좋아요 0 조회수 568

질문합니다.

해결됨

스프링 핵심 원리 - 기본편

안녕하세요. 섹션7 의존관계 자동 주입 2번째 파트 옵션 처리 초반 에러코드 수정중에 아래와 같이 해결이 안되고 있습니다. package hello.core.member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository; @Autowired //ac.getBean(MemberRepository.class) public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Override public void join(Member member) { memberRepository.save(member); } @Override public Member findMember(Long memberId) { return memberRepository.findById(memberId); } //테스트 용도 @Override public MemberRepository getMemberRepository() { return memberRepository; } } Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [/Users/kssk3-/Desktop/study/core/out/production/classes/hello/core/member/MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1193) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1442) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:552) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 17 more Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1418) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... 41 more

  • spring
  • 객체지향
수성강 댓글 1 좋아요 0 조회수 233

인기 태그

인프런 TOP Writers

주간 인기글