묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
XmlAppContext 관련 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]XmlAppContext 테스트 실행시키니까 강의에서 나온것처럼 않뜨고 이런식으로 뜨는데 이게 원래 그런건가요?00:56:47.686 [main] WARN org.springframework.core.LocalVariableTableParameterNameDiscoverer -- Using deprecated '-debug' fallback for parameter name resolution. Compile the affected code with '-parameters' instead or avoid its introspection: helllo.core.Member.MemberServiceImpl00:56:47.698 [main] WARN org.springframework.core.LocalVariableTableParameterNameDiscoverer -- Using deprecated '-debug' fallback for parameter name resolution. Compile the affected code with '-parameters' instead or avoid its introspection: helllo.core.Order.OrderServiceImpl
-
해결됨스프링 핵심 원리 - 기본편
AppConfig 작성시 인스턴스 일치 문제관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]AppConfig 작성시 사진과 같이 코드를 작성하면 OrderServiceImple 에 들어가는 MemoryMeberRepository랑 Memberservice에 들어가는 MemoryMeberRepository 각 각 new 로 생성하여 할당했으므로 둘이 동기화가 안돼는 거 아닌가요??
-
미해결스프링 핵심 원리 - 기본편
@Configuration
안녕하세요! 싱글톤 강의 듣다가 궁금한 점이 있어서 질문 남깁니다.우선 제가 이해한 내용이 맞는지 확인 부탁드립니다.@Configuration을 붙이지 않고, @Bean만 붙인 객체들은 생성하면 빈에 등록되며, 빈 컨테이너에 의해 관리는 되지만 @Configuration를 붙이지 않았기 때문에 스프링이 AppConfig CGLIB라는 라이브러리를 사용하지 않아서 동일한 객체를 가지고 오지 않아 싱글톤이 보장되지 않는다. 맞나요? 그래서 @Configuration을 쓰지 않았을 때 memberRepository가 3번 출력이 되는 것 까지는 이해했습니다..제가 이해가 안 가는 부분은 MemberServiceImpl에 들어있는 memberRepository가 왜 new MemoryMemberRepository()를 넣어준 것과 같나요? 왜 스프링 컨테이너가 관리하지 않나요...? AppConfig에서 memberRepository()에서 new MemoryMemberRepository() 해줬는데 여기에 싱글톤 적용이 되지 않아서 계속 new 해준 것과 같다는 의미인가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
챕터7의 메소드/메소드 오버로딩 쪽 질문있습니다.
안녕하세요!챕터7을 수강 중인데, 질문이 있습니다.class BlackBox 정의할 때, 자동신고 기능 메소드는void autoReport() {if~~}이고 녹화기능 메소드는void record(boolean showDateTime, boolean showSpeed, int min){if~~}인데, 두 메소드 모두 변수가 boolean인데(min 제외)자동 신고 기능 메소드도 void autoReport(boolean canAutoReport) 와 같이 표현할 수 있을까요? 해보니 에러가 떠서 질문드립니다. 아직 메소드가 낯설어서 어렵습니다ㅠㅠ
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈11 문제
안녕하세요 선생님 완강 후 처음부터 다시 들으면서 퀴즈를 풀어보는 중입니다. 제가 퀴즈 11을int error = 1; try { if (error == 0) { System.out.println("(상품 구매를 완료하였습니다.)"); } else if (error == 1) { System.out.println("상품 구매 가능 시간이 아닙니다."); throw new NotOnSale("상품 구매는 20시부터 가능합니다."); } else if (error == 2) { System.out.println("해당 상품은 매진되었습니다."); throw new SoldOut("다음 기회에 이용해주세요"); } } catch (Exception e) { System.out.println(e.getMessage()); } } } class NotOnSale extends Exception { public NotOnSale(String message) { super(message); } } class SoldOut extends Exception { public SoldOut(String message) { super(message); } }선생님이랑 다르게 catch에 안넣고 else if에 throw new를 넣어서 풀었는데 이렇게 풀어도 퀴즈 조건에 부합한건가요?? 이렇게 풀면 안 좋은점이 있을까요?
-
미해결스프링 핵심 원리 - 기본편
AllBeanTest시, NoUniqueBeanDefinitionException 오류
AllBeanTest에서,강사님하고는 다른 오류가 뜹니다 ㅠ < 강사님 오류 > < 저의 오류 >org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\study2\core\out\production\classes\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy 라고 뜨는데, 왜 강사님과 다르게 저는 빈이 2개가 있다는 오류가 뜰까요?? ㅠㅠ orderServiceImplpackage hello.core.order; import hello.core.annotation.MainDiscountPolicy; import hello.core.discount.DiscountPolicy; 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.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.AutoConfigurationPackage; import org.springframework.stereotype.Component; @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; // final이 붙으면 필수값이 됨.@RequiredArgsConstructor는 필수값을 가지고 생성자를 만들어준다. @Autowired private DiscountPolicy rateDiscountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOder(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; } } RateDiscountPolicypackage hello.core.discount; import hello.core.annotation.MainDiscountPolicy; import hello.core.member.Grade; import hello.core.member.Member; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; @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; } } } FixDiscountPolicypackage hello.core.order; import hello.core.annotation.MainDiscountPolicy; import hello.core.discount.DiscountPolicy; 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.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.AutoConfigurationPackage; import org.springframework.stereotype.Component; @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; // final이 붙으면 필수값이 됨.@RequiredArgsConstructor는 필수값을 가지고 생성자를 만들어준다. @Autowired private DiscountPolicy rateDiscountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOder(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; } } AppConfigpackage hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; 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.junit.jupiter.api.Test; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; // @Bean memberService -> new MemoryMemberRepository() // @Bean orderService -> new MemoryMemberRepository() // call AppConfig.memberService // call AppConfig.memberRepository // call AppConfig.memberRepository // call AppConfig.orderService // call AppConfig.memberRepository // 예상은 위와 같지만, 실제 실행된 것은 // call AppConfig.memberService // call AppConfig.memberRepository // call AppConfig.orderService @Configuration public class AppConfig { @Bean public MemberService memberService() { System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(memberRepository()); } @Bean public MemoryMemberRepository 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()); // return null; } @Bean public DiscountPolicy discountPolicy() { //return new FixDiscountPolicy(); return new RateDiscountPolicy(); } } AllbeanTestpackage hello.core.Autowired; import hello.core.AutoAppConfig; import hello.core.discount.DiscountPolicy; import hello.core.member.Grade; import hello.core.member.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; 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.*; 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"); // discount가 얼마나 되는지 보는 서비스 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 i, String fixDiscountPolicy) { return 0; } } }
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
패키지 부문에서 로또 생성번호하는 과정에서 질문이 있습니다.
System.out.print("랜덤 로또 번호 : ");for (int i = 0; i < 6; i++) {System.out.print((random.nextInt(45) + 1));System.out.print(" ");6개의 숫자를 동시에 생성 해보려고 for 문 이용해서 숫자를 생성 해봤는데 중복된 숫자들이 나열되는 경우들이 있더라구요. 이럴경우 숫자가 중복되지 않게 나오게 하는 방법이 있을까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈 8번 질문 있습니다.
이런 에러가 뜨는데 뭐가 잘못된걸까요
-
미해결객체 지향 프로그래밍 입문
책임 분리 및 할당 관련 질문이 있습니다.
안녕하세요. 강사님.객체지향에서 시스템단에서 책임져야할 기능을무엇을 기준으로 해서 세부적으로 하위 기능들을 추출하고 각 객체(역할)에 할당한다고 하셨는데 궁금한점이분해된 책임을 적절한 객체에 할당하기 전에객체의 엔티티 구조에 대한 정의가 어느정도 나와 있어야 되는거지요 ?방법1 > 책임 분해 → 책임을 적절한 역할에 할당 → 책임 할당받은 객체 구현(해당 과정에서 필요한 정보들 셋팅)방법2 > 책임 분해후 할당하기전에 이미 엔티티 구조에 대해서 어느정도 구조가 완성되어 있어 책임을 수행하는데 필요한 정보가 많은 객체에 책임 할당.객체의 엔티티 구조가 어느 시점에 정의가 되는게 맞는걸까요 ?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
안녕하세요! 수업자료 다운 받았는데요
JavaWorkspace 압축 풀고 IntelliJ에서 파일을 열려고 하는데, Trust Project가 없는데 어떡하나요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
getter&setter를 보고 있습니다 물음표로 주석 단 부분은 왜 null 값이 나오나요?
package nodocoding; public class 21GetterSetter { public static void main(String[] args) {BlackBox b1 = new BlackBox();b1.modelName = "까망이";b1.price = 200000;b1.color = "블랙"; // 할인 행사b1.price = -5000;System.out.println("가격: " + b1.price + "원"); // 고객 문의System.out.println("해상도: " + b1.resolution); System.out.println("--------------"); BlackBox b2 = new BlackBox();b2.setModelName("하양이");b2.setPrice(-5000);b2.setColor("화이트"); System.out.println("가격: " + b2.getPrice() + "원");System.out.println("가격: " + b2.price + "원");System.out.println("해상도: " + b2.getResolution());System.out.println("해상도: " + b2.resolution); ///??? } }
-
해결됨스프링 핵심 원리 - 기본편
빌드가 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]project에 강의 영상과 달리 Gradle 이 두개가 있길래 첫번째 선택후 영상과 동일한 방법으로 파일을 열었는데 이런 에러가 뜹니다. 뭐가 문제 일까요??
-
해결됨스프링 핵심 원리 - 기본편
초기 설정 sync 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니요3. 질문 잘하기 메뉴얼을 읽어보셨나요? 넵[질문 내용] No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.1 was foundsync에서 이 문구가 계속 뜹니다ㅠㅠ- Incompatible because this component declares a component, compatible with Java 17 and the consumer needed a component, compatible with Java 11이거랑 같이 여러개가 뜨는데 뭐가 문제일까요? 17 설치해놨었는데 11 사용한다고 하셔서 11 다시 설치하고 환경변수까지 바꿔놨는데 계속 뜨네요...
-
미해결스프링 핵심 원리 - 기본편
생성자 주입 문의
[질문 내용]안녕하세요. 생성자 주입을 권장한다는 말씀을 듣고 의문이 생겨 문의드립니다.만약 개발 도중 생성자 필드가 추가가 된다면 해당 생성자 부분 코드를 건드리게 될텐데, 그에 따라 해당 생성자를 사용했던 코드들이 전부 오류가 날 것이고 변경이 필요할 것 같습니다.해당 사항이 발생하더라도 생성자 주입 방식을 제일 권장하시는 걸까요?
-
미해결스프링 핵심 원리 - 기본편
8분20초 쯤에 return 값에서 빨간줄이 쳐집니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.여기에 질문 내용을 남겨주세요.제가 어디 놓친 부분이 있을까요??ㅠㅠ 되돌려봤는데도 다시 써봐도 해결이 안되네요ㅠㅠ
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈12 질문
이렇게 하면 안되나요? run 메소드 사용하면 동시에 처리 못하니까 B에서 start 메소드 사용하고 Set는 run 으로 사용해서요 public class _Quiz_12 { public static void main(String[] args) { B b = new B(); Set set = new Set(); b.start(); A(); set.run(); } public static void A(){ System.out.println("-- A 상품 준비 시작 --"); for (int i = 1; i <= 5; i++) { System.out.println("A 상품 준비" + i + "/5"); } System.out.println("-- A 상품 준비 끝 --"); } } class B extends Thread{ @Override public void run() { System.out.println("-- B상품 준비 시작 --"); for (int i = 1; i <= 5; i++) { System.out.println("B 상품 준비" + i + "/5"); } System.out.println("-- B 상품 준비 끝 --"); } } class Set extends Thread{ @Override public void run() { System.out.println("-- 세트 상품 포장 시작 --"); for (int i = 1; i <= 5; i++) { System.out.println("세트 상품 준비" + i + "/5"); } System.out.println("-- 세트 상품 포장 끝 --"); } }
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
코틀린 Companion object
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 선생님! 수업을 잘 듣고있는 백엔드 취준생 입니다!자바를 공부하다가 코틀린도 공부하면 좋을꺼 같아서 같이 공부하고있는데요..혹시 좀더 코틀린을 딥하게 파보고 싶은데 추천하시는 사이트 혹시 있으실까요??
-
미해결스프링 핵심 원리 - 기본편
이클립스 프로젝트 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]start.spring.io에서 저대로 설정하고 이클립스에서 바로 불러오기하면 두번째사진처럼 에러가 납니다. 뭐가 문제인지 모르겠어요ㅠㅠ
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈08 SpeedCam 메소드 구현부분
Factory 클래스에서는 인터페이스 호출하는 메소드에 아래처럼 실행문(구현)을 작성했는데, @Override public void report() { reporter.report(); } @Override public void detect() { detector.detect(); }SpeedCam 에서는 왜 this. 을 붙이나요?붙여도 안붙여도 코드진행에 영향이 없는걸까요?public void detect() { this.detector.detect() } public void report() { this.reporter.report() }
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈#10 질문있습니다.
map(x -> x.age >= 20 ? x.name + " 5000원" : x.name + " 무료")이렇게 된다는 것은 Customer 객체 x의 age가 20세 이상이면 Customer 객체 x의 이름의 내용이' 챈들러 5000원 ' 이렇게 바뀌는 건가요?아직 map이 어렵습니다.