묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
OrderServiceImpl은 DIP도 잘 지킨 코드인가요 ??
OrderServiceImpl은 DIP도 잘 지킨 코드인가요 ?? Order와 할인정책 사이 관계를 볼 때, 단일책임 원칙은 할인 정책이 discount하는 일 1개만 하고 있으니 지켰다고 보는데 DIP도 지킨 코드인가요 ?? 할인정책 관련 코드가 OrderServiceImpl부분에 아예 없는게 잘 지키는 거라고 생각했는데 아닌가요 ???
-
미해결스프링 핵심 원리 - 기본편
<섹션 7. 조회한 빈이 모두 필요할 때> 강의 질문
DiscountService 클래스에서 모든 Map으로 DiscountPolicy를 주입(@Autowired 생략) 받는다고 했는데 그렇다면 클래스에 @ComponentScan을 붙여서 등록된 빈들을 조회할 수 있도록 해야 하는 거 아닌가요?? 조금 헷갈리네요... ㅎㅎ
-
해결됨김영한의 실전 자바 - 기본편
[super - 생성자] 기본생성자 생략 부분
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]```public class ClassB extends ClassA{ public ClassB(int a) { super(); // 기본 생성자 생략 가능 System.out.println("ClassB 생성자 =" + a); }``````public class ClassA { public ClassA() { System.out.println("ClassA 생성자"); } }```강의에서 자식 클래스의 생성자에서 super(); 부모 클래스의 생성자 호출을 기본 생성자일 경우 생략가능이라고 하셨습니다.제가 이해가 안 가는 부분은 ClassA의 생성자는 기본 생성자가 아닌 매개변수가 없는 사용자 정의 생성자이고 자식 클래스에서는 기본생성자일 경우 생략가능이 아니라 자바 컴파일러가 부모 생성자의 호출이 명시적으로 없는경우 super();를 첫줄에 삽입해주기에 매개변수가 없는 생성자나 또는 생성자 정의가 없을 경우 기본 생성자를 호출한다가 맞지 않나 생각해 보는데 이 부분에 대해서 제가 잘못 알고 있는 점이 있으면 알려주시면 감사하겠습니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바 프로그램은 자바가 설치된 모든 OS에서 실행할 수 있다고 하셨는데요
자바 프로그램은 자바가 설치된 모든 OS에서 실행할 수 있다고 하셨는데 제가 아는 언어들 예를들면 python, c 등 도 모두 다른 OS에서 실행되는걸로 알고있는데 제가 잘못알고 있는건가요?자바가 다른 OS에서 실행되는게 다른 언어의 차이점이 되는 이유가 뭔지 궁금합니다.
-
해결됨진짜! 자바스크립트(Javascript) - 기초부터 고급까지
메모리에 변수 생성과 값을 할당할 때
지금 변수와 값을 생성하는 부분을 보고있습니다. 그런데 메모리에 변수와 값들의 주소를 가지는 포인터 변수를 가진다고 하신 부분에서 궁금증이 생겼는데 그러면 메모리의 값들은 이미 메모리 셀에 기존부터 가지고 있는 건가요? 아니면 그때마다 임의로 값을 메모리에 생성하는 건가요?
-
미해결스프링 핵심 원리 - 기본편
appConfig.xml
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.appConfig.xml 만들고 나서 에러가 뜨는데 어떻게 코드수정을 해줘야 할지 몰라 문의드립니다
-
미해결스프링 핵심 원리 - 기본편
해당 프로젝트 clone하면, 자바 파일이 생성이 안돼요.
private으로 가끔 다른pc에서 git clone해서 해당 프로젝트를 다운받으면, 항상 자바 파일이 컵모양 => 으로 바뀌면서, 읽기만되고 자바 파일도 생성이 안되더라고요.. 구글링 해본결과 소스 루트를 지정하면 해결되는데, clone할때마다 해줘야하는게 좀 번거롭고 이상한 거 같아서, 근본적인 해결책이 궁금합니다..
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
문제와풀이 1번문제 다른방식으로 작성해봤습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]package Cond; public class CondEx1 {public static void main(String[] args) { int score = 52; String grade; if (score >= 90) { grade = "A"; } else if (score >= 80) { grade = "B"; } else if (score >= 70) { grade = "C"; } else if (score >= 60) { grade = "D"; } else { grade = "F"; } System.out.println("학점은 " + grade + "입니다."); } }라고 코드를 짜봤는데 강의에서 사용하신 코드가 짧고간결한것 외에 또 다른 이점이 있나 궁금해서 작성해봅니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
강의 듣기점 궁금한점 질문있습니다
안녕하세요, 김영한 강사님. 자바 기본 개념을 듣기 전에 궁금한 점이 있어서 질문드립니다.제가 안드로이드 앱 개발을 위해서 자바와 코틀린을 배우려고 하는데, 자바 기초부터 다시 제대로 공부하면서 공부하고 난 뒤에 코틀린을 공부하려고 합니다.강사님의 강의들을 보니 백엔드와 웹에 기반한 강의들을 하시는 것을 보았는데, 이 Java 기초강의 시리즈를 끝까지 듣는 것이 자바 기본적인 것을 배우기에 좋은지 알고 싶습니다.
-
미해결김영한의 실전 자바 - 기본편
참조값 질문
안녕하세요. 현재 클래스 섹션 학습중인데 "참조값" 이 좀 헷갈려서 질문을 남기게 되었습니다. 제가 이해한 바로는 객체를 생성하면 참조값이 생성이 되고, 이 참조값을 통해 객체에 접근해서 객체를 사용한다. 이렇게 이해했는데 맞을까요?? 만약 아니라면 설명 한번 부탁드립니다..!
-
미해결김영한의 실전 자바 - 기본편
Interface 질문
안녕하세요. Interface 를 배울려고 하는데, 다형성을 모른 상태로 배우면 안되고, 다형성을 배운 다음에 Interface 로 넘어가야하나요 ?
-
해결됨C개발자를 위한 최소한의 C++
강사님 질문 드립니다.
opArithmetic 교육시에 "=" 오퍼레이터의 반환자를 *this 로 하지 않으면 문제가 생길거라 하셨는데 구체적인 문제 설명이 없으셔서 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
멤버서비스 클래스 만드는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]현재 위와 같은 상황입니다. 왜 굳이 MemberService 인터페이스 및 클래스를 작성해야 하나요? 예를들어, MemberServiceTest 클래스에서다음과 같이 MemberService memberService = new MemberServiceImpl(); 대신 MemberRepository memberRepository=new MemoryMemberRepository(); 과 같이 하여도 되지 않나요? 굳이 MemberService 를 만드신 이유가 있을 것 같아 질문합니다.
-
미해결스프링 핵심 원리 - 기본편
프로토타입 빈 프록시
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. 웹 스코프에서 프록시 모드를 사용했는데, 이것을 프로토타입 빈에도 적용할 수 있는지 궁금해서 코드를 조금 수정해보았습니다. public class SingletonWithPrototypeTest1 { @Test void prototypeFind() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class, SingletonBean.class); SingletonBean singletonBean = ac.getBean(SingletonBean.class); singletonBean.prototypeBean.addCount(); assertThat(singletonBean.prototypeBean.getCount()).isEqualTo(1); SingletonBean singletonBean1 = ac.getBean(SingletonBean.class); singletonBean1.prototypeBean.addCount(); assertThat(singletonBean1.prototypeBean.getCount()).isEqualTo(1); } @RequiredArgsConstructor static class SingletonBean { private final PrototypeBean prototypeBean; } @Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS) static class PrototypeBean { private int count = 0; public void addCount() { count++; } public int getCount() { return count; } @PostConstruct public void init() { System.out.println("PrototypeBean.init " + this); } @PreDestroy public void destroy() { System.out.println("PrototypeBean.destroy"); } } }수명이 다할 때까지 동일한 인스턴스를 사용하는 request 스코프 빈과 달리 prototype 빈은 메서드를 호출할 때마다 인스턴스 주소값이 달라지는 것 같아요. 가짜 프록시 객체도 스프링 컨테이너에서 빈을 가져오기 때문인가요?request 빈은 수명이 다할 때까지 스프링 컨테이너에서 관리되지만, prototype 빈은 스프링 컨테이너에서 초기화 단계까지만 관여하므로, 가짜 프록시 객체가 해당 객체의 메서드가 호출될 때마다 새로운 인스턴스를 가져오는건가요?? 그럼 가짜 프록시 객체는 항상 스프링 컨테이너를 경유하는 건가요?
-
미해결스프링 핵심 원리 - 기본편
다음과 같은 에러가 납니다... 몇 날 며칠 고민해도 해결이 안 됩니다.. 도와주세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. > Task :compileJava FAILEDC:\Users\user\Desktop\ȫ����\�ڵ�\core\src\main\java\hello\core\AppConfig.java:28: error: constructor OrderServiceImpl in class OrderServiceImpl cannot be applied to given types; return new OrderServiceImpl( ^ required: no arguments found: MemberRepository,DiscountPolicy reason: actual and formal argument lists differ in length1 errorFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':compileJava'.> Compilation failed; see the compiler error output for details.* Try:> Run with --info option to get more log output.> Run with --scan to get full insights.BUILD FAILED in 1s1 actionable task: 1 executed AppConfig랑 OrderServiceImpl은 강사님 코드랑 똑같이 했는데 어떤 것 때문에 안 되는지 모르겠습니다. 도와주세요.. 코드 첨부하겠습니다. package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.member.MemoryMemberRepository; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MemberService memberService() { //1번 System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { //1번 System.out.println("call AppConfig.orderService"); return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository() { //2번? 3번? System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new RateDiscountPolicy(); } } package hello.core.order; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.member.Member; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @RequiredArgsConstructor public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; // 아래 생성자를 RequiredArgsConstructor이 만들어줌 /* @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; } }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
강의 화면중 강의 자료 문의
안녕하세요. 먼저 유익한 강의 제공해주셔서 매우감사합니다.강의 시청중 궁금한 사항이 있는데, 해당 강의 자료를 어디서 다운로드 할수 있는지 알수 있을까요?소스코드는 다운로드후 적용 하였으나, 해당 웹 강의자료? 들은 강의사이트에서 찾지 못하여 문의 남깁니다.
-
미해결스프링 핵심 원리 - 기본편
실제로 수정자 주입시 누락문제를 경험하는 일이 있나요?
[질문 내용]여기에 질문 내용을 남겨주세요. 수정자 주입을 선택한 경우 4:38에 NPE가 나는 이유는 이해했습니다비록 @Autowired이 달려있지만 ac.getBean으로 획득한 orderService가 아니기 때문에 의존관계 주입이 일어나지 않았고 따라서 NPE가 발생한 것인데요그런데 실제로는 스프링을 사용할 것이고 따라서 orderService를 스프링 컨테이너가 관리하는 스프링 빈으로 사용을 할텐데 이 경우에는 @Autowired가 의존관계 주입을 알아서 다 해주니까수정자 주입의 경우에 누락문제를 걱정할 필요가 없는것 아닌가요?실제로 순수 자바코드를 사용해서 개발하는 경우가 있기 때문에 해당 예제를 보여주신것인지 궁금합니다
-
미해결스프링 핵심 원리 - 기본편
@Configuration과 @ComponentScan을 제대로이해한것이 맞나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 @Configuration의 역할에 대해 질문드립니다처음에 제가 생각한 @Configuration의 역할은 "Bean을 등록할 때 싱글톤이 되도록 보장해준다" 였는데요https://www.inflearn.com/questions/323589https://www.inflearn.com/questions/157309위 두 답변을 보고 제대로 이해한것이 맞는지 궁금하여 질문드립니다제가 이해한것은 다음과 같습니다1. 스프링 빈은 스프링 컨테이너에 언제나 싱글톤으로 등록/관리된다2. @Configuration은 의존관계로 동일한 클래스가 여러번 객체로 생성되는것을 방지한다그래서 싱글톤의 원래 목적인 하나의 클래스는 하나의 객체만 유지해서 사용하기 위함을 @Configuration을 사용하는 것이지@Configuration 자체가 스프링 빈을 싱글톤으로 보장하는것은 아니다(어차피 빈은 언제나 싱글톤으로 관리되므로)3.@ComponentScan 역시 스프링 빈을 등록해주므로 싱글톤으로 빈을 등록해준다만약 2번과 같이 의존성으로 싱글톤을 해칠 가능성이 존재하는 경우에 스프링 빈 수동등록에서는 @Configuration을 활용했다면스프링 빈 자동등록에서는 @Autowired로 해결한다
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
문제와풀이3 질문입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]안녕하세요 강사님 혹시 문제에 대한 이해가 되긴하지만 정확한 이해가 잘 안되다보니 질문을 남깁니다! productNames[] 와 productPrices[] 배열안에 productCount를 넣는 이유를 자세히 설명가능할까요..? 저는 for문으로 처음시도를해봤는데 안되고 한참을 고민하면서 여러시도를 한 끝에 해결이 되질않아 풀이과정을 봤습니다. 그래서 풀이방식이 궁금해져서요!! (제가 궁금해하는 부분에 대한 설명이 부족한거같아 추가로 더 적습니다! for문을 돌려 for(int i = 0; i <= maxProducts; i++) {System.out.print("상품 이름을 입력하세요 :");productNames[i] = sc.nextLine();System.out.print("상품 이름을 입력하세요 :");productPrices[i] = sc.nextInt(); productCount++; } 식으로 했습니다! 이방식이 안되는 이유도 궁금해서요!
-
해결됨김영한의 실전 자바 - 기본편
멤버변수질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기서 DRiver는 멤버변수로 Car car를 가진다 라고 하는 문장이 잘 이해가 안갑니다.private CAR car; 라고 선언하면 그렇게 되는건가요?이부분에 대한 조금 지식이 부족한데 어느 파트에서 다시 이 내용을 들을수있나요?