묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결객체 지향 프로그래밍 입문
6분 26초에 말하는 객체의 안에 있는 프로시저란 객체의 메서드를 말하는건가요?
6분 26초에 말하는 객체의 안에 있는 프로시저란 객체의 메서드를 말하는건가요?
-
해결됨스프링 핵심 원리 - 기본편
AppConfig에 관한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 수업중에 의문점이 생겨서 질문드립니다. public class AppConfig { private MemberRepository memberRepository(){ return new MemoryMemberRepository(); } private DiscountPolicy discountPolicy(){ return new RateDiscountPolicy(); } public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } public OrderService orderService(){ return new OrderServiceImpl(memberRepository(),discountPolicy()); } }객체의 인스턴스를 만들때 이렇게 정의한것과public class AppConfig { private MemberRepository memberRepository = new MemoryMemberRepository(); private DiscountPolicy discountPolicy = new RateDiscountPolicy(); public MemberService memberService(){ return new MemberServiceImpl(memberRepository); } public OrderService orderService(){ return new OrderServiceImpl(memberRepository,discountPolicy); } }이렇게 정의했을때의 차이점이 있나요?제 생각에는 오히려 위의 경우가 Memberservice,Orderservice에서 memberRepository()를 두번 사용하니 new로 서로 다른 인스턴스가 생성되어 만약 memorymemberRepository의 저장소가 static이 아니라면 오류가 생길것 같은데 제 생각이 잘못된 것인지 궁금합니다,
-
해결됨스프링 핵심 원리 - 기본편
AutoAppConfigTest 오류
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]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:1173) at hello.core.scan.AutoAppConfigTest.basicScan(AutoAppConfigTest.java:25) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92) at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)AppConfig에서 주석 처리도 했는데, 테스트 코드 실행시 왜 NoSuchBeanDefinitionException오류가 발생하는지 잘 모르겠습니다...
-
미해결김영한의 실전 자바 - 기본편
연산위치질문 있습니다.
객체 혹은 인스턴스는 실제 데이터가 저장된 메모리의 주소만 가지고있고, 실제 데이터는 메모리에 적재 된다 라고 이해했습니다. 맞을까요? 저장된 변수를 가져와 처리 (연산 등)을 하게 된다면 실제로 처리되는곳은 메모리상에서 데이터가 처리되는 것 일까요? 코드를 실행하면 컴파일러가 코드의 문법오류를 계산하고, class파일로 컴파일 한뒤 JVM 실행엔진에서 실행된다고 알고있는데, 데이터가 코드를 따라 연산되는곳은 실행엔진속 스택 혹은 힙 메모리 인가요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ScannerWhileEx4 문제 질문있습니다.
package scanner.ex; import java.util.Scanner; public class Ex1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int option = 0; int sum = 0; while (option != 3){ System.out.print("1: 상품 입력, 2: 결제, 3: 프로그램 종료 "); option = scanner.nextInt(); if (option == 1){ scanner.nextLine(); System.out.print("상품명을 입력하세요: "); String name = scanner.next(); System.out.print("상품의 가격을 입력하세요: "); int price = scanner.nextInt(); System.out.print("구매 수량을 입력하세요: "); int count = scanner.nextInt(); System.out.println("상품명 " + name + "가격 " +price + "수량 "+ count); sum += price * count; } else if (option == 2){ System.out.print("총 비용: " +sum); }else { System.out.println("올바른 옵션을 선택해 주세요."); } } System.out.println("프로그램을 종료합니다."); } }제가 작성한 코드값에서 항상 총비용이 +1이 되어있는데 어떤문제가 있는지 알 수 있을까요?
-
미해결스프링 핵심 원리 - 기본편
@AutoWired로 스프링 빈이 2개일때
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]수업시간에 같은 타입이 2개일때 @AutoWired의 파라미터나 필드명으로 매칭하실 수 있다고 하셨는데요렇게 rateDiscountPolicy로 바꾸고 AutoAppConfigTest의 basicScan()을 돌렸는데<오류 코드>org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Spring\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 똑같이 UnsatisfiedDependencyException 오류가 나네요 ㅜㅜ
-
미해결스프링 핵심 원리 - 기본편
XmlAppContext() 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 오류 로그는 다음과 같습니다. org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [appConfig.xml] at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:351) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:319) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:184) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:220) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:191) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:253) at org.springframework.context.support.GenericXmlApplicationContext.load(GenericXmlApplicationContext.java:130) at org.springframework.context.support.GenericXmlApplicationContext.<init>(GenericXmlApplicationContext.java:70) at hello.core.xml.XmlAppContext.XmlAppContext(XmlAppContext.java:14) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) Caused by: java.io.FileNotFoundException: class path resource [appConfig.xml] cannot be opened because it does not exist at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:215) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) ... 11 more ```class path resource에서 appConfig.xml을 찾을 수 없다고 하는데, 보시는 바와 같이 있습니다. 참고로 테스트 코드도 다음과 같습니다. package hello.core.xml; import hello.core.member.MemberService; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; import static org.assertj.core.api.Assertions.assertThat; public class XmlAppContext { @Test void XmlAppContext() { ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml"); MemberService memberService = ac.getBean("memberService", MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); } } ``` 어떤 부분이 문제일까요...
-
미해결스프링 핵심 원리 - 기본편
콘솔에 스프링 실행 시 로그가 안뜹니다.
안녕하세요 스프링 3.2.0을 쓰고 있습니다.강사님처럼 스프링 실행 시이러한 로그들이 안뜨고, MemberApp이나 OrderApp을 실행하면이런식으로 뜨는데 스프링 버전 차이에서 오는 것일까요..?교안에도 이렇게 나와있어서요. 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
질문있습니다.
조회한 빈이 모두 필요할 때 List,Map을 이용하는 문제입니다. package hello.core.autowired; import hello.core.AutoAppConfig; import hello.core.discount.DiscountPolicy; import hello.core.member.Grade; import hello.core.member.Member; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; 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; 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); System.out.println("discountCode = " + discountCode); System.out.println("discountPolicy = " + discountPolicy); return discountPolicy.discount(member, price); } } } 여기서 policyMap과 List에 주입되는 과정이 이해가 안갑니다. Map은 왜 <String,DiscountPolicy>로 정의했고 List는 <DiscountPolicy>로 정의 했는지, 그리고 여기에 어떻게 Ratediscountpolicy와 Fixdiscountpolicy가 들어갔는지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
컴포넌트 스캔 시 빈 중복 에러 발생
안녕하세요! 섹션 6 중 컴포넌트 스캔과 의존관계 자동 주입하기 강의 관련 질문 드립니다.OrderServiceImpl@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DisountPolicy disountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DisountPolicy disountPolicy) { this.memberRepository = memberRepository; this.disountPolicy = disountPolicy; } ... }(DisountPolicy 는 처음 클래스 명 설정할 때 오타가 나서 그냥 그대로 쭉 사용하고 있습니다..) AutoAppConfig를 생성한 후 각 클래스에 @Component 어노테이션을 붙여줬고, OrderServiceImpl 클래스에 @Autowired를 통해 의존 관계를 주입하는 과정에서Could not autowire. There is more than one bean of 'DisountPolicy' type.Beans:discountPolicy (AppConfig.java)rateDiscountPolicy (RateDiscountPolicy.java) 에러가 발생합니다. 원인을 찾아보니 같은 타입의 빈이 여러 개 존재해서 발생하는 에러라고 하는데, 제 코드에서 어떤 부분이 잘못된건지 모르겠어서 질문 드립니다.. AutoAppConfigpackage Hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; @Configuration @ComponentScan ( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) public class AutoAppConfig { } 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 DisountPolicy discountPolicy() { return new RateDiscountPolicy(); } }
-
해결됨김영한의 실전 자바 - 기본편
객체 향상된 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];를 통해 배열을 만들었고, 배열도 객체라고 기억하고 있습니다.위에서 배열(객체)를 만들었는데 왜 객체를 또 만들어주나요?배열은 객체의 참조값만 저장이 되기 때문에 객체를 따로 생성해서 따로 생성한 객체에 값을 넣어줘야하기 때문이라고 이해했는데, 제가 이해한 내용이 맞을까요?