묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
도메인 객체 질문
심폐소생술 PPT처럼Presentation, Business, Domain, Persistence로 나눈다고 하면 @Entity가 붙은 Class는 Persistence에 두고@Entity가 붙지 않은 Domain Class는 Domain에 둬서클래스를 2개를 만드는 건가요?예를 들어 아래 MemberEntity는 Persitence Package에 위치하고@Entity public class MemeberEntity { ... }public class MemberDomain { ..MemberDomain은 Domain Package에 위치하게 해서Service Class에서 Repository를 이용해서 MemberEntity를 가져온 다음에 MemberEntity를 MemberDomain으로 변환한 다음에 비즈니스 로직을 작성하면 되는건가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
안녕하세요. 퀴즈 7번 질문있습니다.
안녕하세요!!제가 코딩을 시작한지 일주일 조금 넘어서..기본 개념이 헷갈리는게 많아서 질문이 많습니다 ㅠㅠ 퀴즈 7번에서 class HamBurger 만들고 생성자 만들때public HamBurger(){ this("햄버거");}//매개변수가 없는 생성자와 public HamBurger(String name){ this.name = name;}//매개변수 넣은 생성자 이렇게 두 개 만드셨는데 그 이유가 잘 이해가 안 가서요,, this와 this()의 개념에 대해서는 어느정도 이해를 한 것 같은데 실제 코드를 짤 때 생성자를 하나가 아닌 두개 만드는 이유가 궁금합니다..! 생성자 하나로는 안되는걸까요? 나도 코딩 선생님 강의를 유튜브에서 처음 듣고 인프런으로 넘어왔는데 늘 좋은 강의 감사한 마음으로 듣고 있습니다. 질문이 많아도 이해해주세요ㅠㅠ미리 감사합니다!
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
멀티 쓰레드 동기화 관련 질문입니다!
ArrayList, HashMap은 동기화가 지원이 안되지만 최적화되어 성능에 유리하고,Vector,.HashTable은 동기화는 지원이 되지만 그만큼 느리다는 점이라는 내용이 제가 이해한 부분이 맞을까요??그리고 추가적인 질문으로는 동기화가 실행속도와 관련이 있다면,멀티 스레드 환경에서는 1. 쓰기 작업에서는 동기화를 적용하여 데이터 영역에 안전보장2. 읽기 작업은 동기화를 적용하지 않아 성능 최적화이런 방식으로 적용하면 될까요?
-
미해결스프링 핵심 원리 - 기본편
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 문의하기를 이용해주세요. 안녕하세요! 선생님! 수업을 잘 듣고있는 백엔드 취준생 입니다!자바를 공부하다가 코틀린도 공부하면 좋을꺼 같아서 같이 공부하고있는데요..혹시 좀더 코틀린을 딥하게 파보고 싶은데 추천하시는 사이트 혹시 있으실까요??