묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
상대경로 관련 질문드립니다
안녕하세요! 퀴즈를 풀다가 상대 경로에 대해 궁금한 점이 생겨 질문드립니다.강의에서 saying.txt 파일과 Quiz_13 파일이 chap_13에 속한 상황으로 나옵니다. 여기서 저는 상대 경로는 현재 디렉토리를 기준으로 목표로 하는 파일의 위치를 작성하는 것이라고 이해하여 FileReader의 파라미터로 "saying.txt"라고 작성하였습니다. 그런데 강의를 본 후 src폴더의 경로부터 작성해야 함을 알게 되었습니다. ("src/chap_13/saying.txt")분명 saying.txt 파일과 Quiz_13 파일이 같은 chap_13 폴더에 있는데 왜 상위 폴더인 src 폴더의 경로부터 작성하는건가요?
-
해결됨스프링 핵심 원리 - 기본편
테스트하는 클래스에서 public을 지워도 된다고 하셨는데
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에서 김영한 선생님께서 테스트할 땐 public을 지워도 된다고 하셨는데혹시 지우는 게 더 좋은 건가요? 테스트 성능이라든가.. 특정 측면에서 public을 지우는 게 더 나은 건가요? 강의에선 public을 지워도 된다고만 말씀하시고 지우는 게 낫다는 말씀은 따로 안 하시긴 했는데,클래스를 새로 만들 때 자동으로 생기는 public을 일부러 지우시길래 혹시 지우는 게 더 나은 거라서 일부러 지우시는 건지, 아니면 지워도 그만 안 지워도 그만이지만, 지워도 상관없다는 걸 보여주시고 싶어서 지우시는 건지 모르겠습니다. public을 써도 크게 상관없나요? 아니면 지우는 게 낫나요? class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean() {
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
intellij 라아센스
intellij에서 라이센스 선택하는 게 나오는 데 어떤것을 선택해야하나요? 그냥 나가기 누르면 창이 꺼집니다. start trial로 하면 될까요?
-
미해결스프링 핵심 원리 - 기본편
새로운 할인 정책 개발 5:35
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]5:35에서 왜 DiscountPolicy discountPolicy = new RateDiscountPolicy();가 아닌RateDiscountPolicy discountPolicy = new RateDiscountPolicy();로 작성하나요?
-
미해결스프링 핵심 원리 - 기본편
appConfig를 호출한 곳이 없는데 어떻게 동작하는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하십니까 강의 너무 유익하게 잘 보고 있습니다.사진에 첨부해 드린것과 같이 강의 자료에서는 별도의 Appconfig가 import 되지 않은 채로 실행되는데 저의 환경에서는 자동적으로 import가 됩니다. 혹시 버전의 차이때문이 아니라면 설명한번 부탁드리겠습니다.감사합니다!
-
미해결스프링 핵심 원리 - 기본편
'다양한의존관계주입방법'강의 중 필드 주입
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]교재에 보면 참고: 부분에 '@Bean에서 파라미터에 의존관계는 자동주입된다. 수동 등록시 자동등록된 빈의 의존관계가 필요할 때 문제를 해결 할 수 있다' 되어있습니다.앞의 @Bean에서 의존관계 자동주입되는것은 생성자주입(어노테이션이 없어도되는)을 통해 의존관계가 자동으로 주입된다고 이해했습니다.그런데 다음 문장에서 수동등록시 자동등록된 빈의 의존관계가 필요할 때 문제를 해결한다라는 내용 자체가 정확히 이해가 되지않습니다. 빈을 수동등록한다는건지 의존관계를 수동등록한다는건지 아예 감이 안잡힙니다. 아래 OrderService 예시를 가지고 구체적으로 설명해주시면 감사하겠습니다.
-
해결됨스프링 핵심 원리 - 기본편
AllBeanTest 관련 질문
스프링 핵심 원리 - 기본편섹션7 - 의존관계 자동 주입 관련 질문입니다. 강의 실습내용 중 AllBeanTest 클래스를 생성하여모든 빈을 조회하는 부분이 있는데,강의에서는 정상적으로 실행이 되지만제가 해봤을 때는 하나의 빈을 기대 했지만 2개가 발견된다는 오류메세지가 발생합니다.강의 내용 상 해당 실습 부분에서는 빈이 2개 이상 일 때 조치를 취해주지 않아도 정상적으로 실행되어야하는 것으로 보이는데 무엇이 문제인지 모르겠습니다.이 부분이 혹시 버전에 따라 다를 수도 있나 싶습니다.강의에서는 springframework 2.3.1 버전을 사용한 것으로 아는데저는 해당 버전을 쓸 수 없어서 2.7.15 버전으로 진행 중 입니다. 아래는 해당 코드입니다.답변 부탁드립니다. 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
ApplicationContext에 대하여
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]2:30 부분부터 ApplicationContext에 대한 설명이 나오고 이게 스프링 컨테이너라고 하시는데 무료 입문 강의인 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'에선 스프링을 실행했을 때도 ApplicationContext라는 걸 입력한 기억이 없는데요 ApplicationContext를 직접 쓰는 거랑 안 쓰는 거랑 어떤 차이가 있는 건가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
챕터 7에 패키지 부분에서
랜덤 실수 부분 설명하실 때 random.nextDouble()에는 범위 지정이 안된다고 하셨는데 제가 괄호 안에 10.0을 넣어서 해보니 오류 없이 잘 실행이 되는데 왜 그럴까요??그리고 로또 번호 하실 때 random.nextInt(45) + 1 이라고 하시고 괄호로 감싸셨는데 괄호를 안쓰면 341 같은 백의 자리 숫자가 나오더라고요 왜 그런건가요?
-
미해결스프링 핵심 원리 - 기본편
AppConfig를 beforeEach() 내부에서 선언하는 것과 외부에서 선언하는 것의 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에선 아래 코드처럼 beforeEach() 내부에 AppConfig가 선언되어 있는데요.public class OrderServiceTest { MemberService memberService; OrderService orderService; @BeforeEach public void beforeEach() { AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); orderService = appConfig.orderService(); } 아래 코드처럼 AppConfig는 beforeEach() 밖에서 미리 선언해 두면 안 되나요? 테스트 실행해 봤을 땐 오류는 없는데, 실무에선 안 좋은 코드인가요? 그렇다면 이유가 궁금합니다. MemberService memberService; OrderService orderService; AppConfig appConfig = new AppConfig(); @BeforeEach public void beforeEach() { memberService = appConfig.memberService(); orderService = appConfig.orderService(); }
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; @Configuration @ComponentScan( basePackages = "hello.core", excludeFilters = @ ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { }package hello.core; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class CoreApplication { public static void main(String[] args) { SpringApplication.run(CoreApplication.class, args); } }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 //MemoryMemberRespository 객체로 초기화된 MemberServiceImpl 객체 반환 public MemberService memberService() { System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { System.out.println("call AppConfig.orderService"); return new OrderServiceImpl ( memberRepository(), discountPolicy() ); } @Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new RateDiscountPolicy(); } } ㅇCoreApplicaton 클래스(@SpringBootApplicaton)을 실행하면, @SpringBootApplicaton 에 @ComponentScan이포함되어 있기 때문에 CoreApplication 의 패키지 하위를전부 scan 합니다.그 과정에서 AppConfig 와 AutoAppConfig 를 만날텐데@ ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) AutoAppConfig에 @Configuration 은 스캔하지 말라고 되어있습니다. Q1. 그러면 AppConfig 는 스캔 되지 않고 빈으로 생성되지 않는 건가요?Q2. AutoAppConfig도 @Configuration이 등록되어있는데그렇다면 AutoAppConfig도 빈으로 생성되지 않는건가요?Q3. @Configuration public class AppConfig { @Bean //MemoryMemberRespository 객체로 초기화된 MemberServiceImpl 객체 반환 public MemberService memberService() { System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { System.out.println("call AppConfig.orderService"); return new OrderServiceImpl ( memberRepository(), discountPolicy() ); } @Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new RateDiscountPolicy(); } }AppConfig 를 컴포넌트 스캔 대상에서 제외해버리면 AppConfig의 수동 빈 등록 내용도 전부 무시되어 얘네들이빈으로 생성되지 않는건가요? Q4.CoreApplicaotn 에도 @Configuration 이,AutoAppConfig에도 @Configuration이 설정되어있는데이 경우 충돌이 일어나지는 않나요? Q5.만약 Q4에서 충돌이 일어나지 않는다면, 두개의 Configuraiton 내용이 둘다 프로젝트에 적용되는 건가요?
-
미해결스프링 핵심 원리 - 기본편
DiscountPolicy를 호출할 때 왜 인터페이스를 호출하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] RateDIscountPolicy로만 불러오는게 아니라 왜private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); 처럼 인터페이스로부터 불러 오나요?인터페이스는 구현체를 만들때에만 쓰이는게 아닌가요?
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
singleton pattern
싱글톤 패턴으로 클래스 작성시 private static Company company = new Company();라고 작성을 하였는데 프로그램 실행 부터 메모리에 올라가는 static 필드가 바로 인스턴스를 생성하는건가요? static 필드와 인스턴스의 생성 시점이 충돌하지는 않나요?클래스 로딩과 static 필드 중 어떤게 먼저 메모리에 잡히는지 궁금합니다.
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
@Entity != RDB Table에 대한 질문입니다.
예전에 조영호님의 '오브젝트' 서적을 읽고 "어떻게 비즈니스 모델을 더 변경에 부드럽게 설계할 수 있을까?"에 고민을 했습니다. 그때의 기억으로는 "역할은 책임을 위한 최소한의 정보만 가지고 있자"라고 제가 이해를 했고 @Entity가 달린 class를 "역할"로 보고 코드 작성을 하니 1개의 RDB Table이 2개 이상의 Entity Class로 매핑이 되었습니다.평소에 1개 Entity Class가 1개 Table와 매핑하는 것과 달라 괴리감이 들었습니다. 핵사고날 아키텍쳐를 적용하면 비즈니스 모델과 JPA의 Entity를 분리할 수 있지만 팀원들과의 합의도 필요해서 적용할 수 없었고 주니어라 해당 기술 도입으로 생산성이 올라갈 것이라고 장담할 수도 없었습니다. 두서가 없이 말이 많았는데 궁금한 점은!"RDB의 1개 Table을 2개 이상의 Entity로 매핑해서 운영을 하는게 보편적인 방식인가요?" 입니다. ++ 개인적인 질문입니다만 객체의 협력 관계를 먼저 설계하는 것과 DB 설계하는 것 어떤 것이 우선인가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
메소드 리턴 질문이요!
번호와 주소는 String 으로 입력하고 그걸 출력하셨고액티비티는 매소드를 바로 출력에 입력해서 사용하셨는데요 액티비티처럼 다 할 수 있는데 왜 굳이 String 으로 한번 거쳐서 변수 이름을 바꾸고 출력하는가요??? 그래야하는 이유가 있을까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
Quiz에서 정답이 달라도 괜찮은가요???
Quiz 6을 풀고 답을 봤는데 결과는 같지만 과정이 조금 달라서 왜 그런지 찾아보는데 아무리 봐도 이해가 잘 안가네요 ㅠㅠString[] size0 = new String[10]; for (int i = 0; i < size0.length; i++) { int shoeSize = 250 + (5 * i); System.out.println("사이즈 " + shoeSize + " (재고 있음)"); } int[] sizeArray = new int[10]; for (int i = 0; i < sizeArray.length; i++) { sizeArray[i] = 250 + (5 * i); } for (int size : sizeArray) { System.out.println("사이즈 " + size + " (재고 있음)"); }위에것이 제가 한거고 아래가 선생님인데요둘다 결과는 같게 출력이 됩니다. 아래의 sizeArray[i] 를 하는 이유랑 아래 for문 하나 더 해서 for(int size : sizeArray) 를 쓰는 이유가 이해가 잘 안가서용.. PS. Quiz를 푸는데 머리에서 바로바로 응용할 수가 없어서 앞에서 배운 부분들을 다시 돌려보고 찾아보면서 quiz 를 입력하는데 괜찮은건가요?? (마치 오픈북처럼...)물론 안보고하면 최고긴 할텐데 그렇게 하려면 완전 달달 외우고있어야 하는것 같아서요
-
해결됨스프링 핵심 원리 - 기본편
안녕하세요 제가 프로토타입 스코프를 싱글톤 빈과 사용시 발생하는 문제점을 정리했는데 맞게 정리를 한건지 궁금해서 질문을 합니다.
[질문 내용]프로토타입 빈은 스프링 컨테이너에 요청시 새로 생성하고 반환한다. 이때 싱글톤 빈과 함께 사용이 되면 싱글톤 빈은 한번만 생성이 되므로 싱글톤 빈이 자동으로 의존관계 주입을 하게 되면 싱글톤 빈이 프로토타입 빈 한개를 계속 사용하게 된다 왜냐면 싱글톤 빈에서 의존관계 주입은 한번만 발생하기 때문이다. 따라서 싱글톤빈이 매번 새로운 프로토타입 빈을 사용하는게 아니라 의존관계를 주입할때 가져온 프로토타입 빈을 싱글톤 빈의 생명주기에 맞춰서 사용하게 된다.다만 clientA, clientB 여러 싱글톤 빈들이 프로토타입 빈을 주입 받을때는 주입 받는 시점에 각각 새로운 프로토타입 빈이 생성되서 주입을 받으므로 각 싱글톤 빈들이 가지는 프로토타입 빈은 다르다. 하지만 결국에는 각각의 싱글톤 빈들이 위와 같은 문제를 가지게 된다.감사합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
private 과 getter, setter
클래스에서 private를 접근 지정자로 설정했는데, getter와 setter 없이 main 클래스의 scanner 를 이용해 접근 할 수도 있는지 궁금합니다.
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
return 사용되는 위치가 궁금합니다
return은 어느 위치에서나 다 사용이 가능하나요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
Enum Class와 Sealed Class에 대한 질문입니다.
안녕하세요.JAVA만 꽤 오래 사용하다가, 이번에 이직하면서 코틀린을 하게 되어 강사님 강의를 들으며 공부하고 있습니다.많이 부족하지만 너무 자세히 설명해주시고 친절하게 설명해주셔서 덕분에 잘 따라가고 있습니다. 궁금한 내용은 아래와 같습니다.Enum과 static (Companion) 의 차이가 무엇일까, 언제 다르게 사용할까 라는 궁금증이 생겼습니다. 자바를 사용하다가 코틀린 강의를들으면서 가장 인상깊었던 부분인 when 부분입니다. enum과 sealed를 어떻게 실무에서 dto와 사용하는지 예시를 알고 싶습니다.Sealed를 어떤 경우에 사용해야할지 감이 안잡히네요. 혹시 조금 만 더 자세하게 설명을 해주실 수 있을까요? 바쁘실텐데 감사합니다. ps. 강사님 발음에 매번 취하고 있습니다.. :)