묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
안녕하세요. 필드DI에 대해 질문드립니다.
https://www.inflearn.com/questions/340767/%ED%95%84%EB%93%9C-%EC%A3%BC%EC%9E%85%EC%9D%98-%EB%AC%B8%EC%A0%9C%EC%A0%90%EC%97%90-%EB%8C%80%ED%95%B4-%EA%B6%81%EA%B8%88%ED%95%9C%EA%B2%8C%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4<테스트 코드 때문에 필드DI를 지양해야 하는 것 이 맞는가?>안녕하세요 담당자님.위 링크에 적힌 내용에 이어서 질문을 드립니다.위 링크를 읽어본 결과 필드 DI를 지양해야 하는 이유 중 하나는 테스트 할 때 순수 자바환경에서 구현 불가능한 방법이기 때문이라고 이해했습니다.하지만 위와 같은 이유로 필드DI를 지양한다는 것이 이해가 안됩니다.실제 어플리케이션 코드에서는 필드DI를 하고, 스프링 없는 테스트 환경에서는 생성자든 setter든 직접 객체를 넣어주면 아무 문제 없지 않을까요?물론 설명해주신 필드DI의 단점은 좀 더 있지만, 테스트 코드 때문에 필드DI를 지양해야 하는 것 이 맞는가에 대한 의문이 들어서 질문드립니다.감사합니다.
-
미해결스프링 핵심 원리 - 기본편
gradle 빌드 로그를 어떻게 없앨 수 있나요?
강의 영상에는 이렇게 코드 결과 값만 나오는데 제 인텔리제이 화면에는 이렇게 나옵니다. 알고리즘 코드를 만든후에 수정을 돌리면 위 화면처럼 결과값만 나오는데 스프링 프로젝트를 실행하면 gradle 빌드 로그가 뜨는데 이걸 수정하는 방법이 있을까요?
-
미해결스프링 핵심 원리 - 기본편
Service를 Interface로 먼저 만드는 이유가 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Service를 Interface로 먼저 만들고 구현체를 따로 만드는 특별한 이유가 있나요?Interface를 굳이 만들어야 하는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
AutoAppConfig 클래스 사용 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한님 안녕하세요! 강의 듣다가 궁금한 점이 생겨서 질문 남깁니다. 이번 강의 내용에서 AutoAppConfig 클래스를 사용하는 이유를 잘 모르겠어서요.. 스프링 입문 강의에서는 별도의 Config 클래스 없이 @Service, @Repository와 같은 어노테이션으로 빈을 등록하고 @Autowired로 의존 관계를 주입했는데, 이번 강의에서는 Config 클래스를 사용하셔서요. 제가 이해한 것이 맞는지 확인 부탁드립니다!!자동으로 빈을 등록하고 의존 관계를 주입할 경우에는 별도의 Config 클래스가 없이 @Component만 붙여줘도 실행하는데는 문제가 없을까요? Config 클래스를 사용하는 이유는 스프링 컨테이너를 통해 빈을 조회하기 위해 사용하신 것이 맞을까요?
-
미해결김영한의 실전 자바 - 중급 2편
comparable 질문
안녕하세요.강의에서 다음의 코드를 비교한 걸 보여주셨을 때 콘솔에 출력되는 개수가 다른데 왜 그런걸까요 ? 자바 버전에 따라 내부 구현된 정렬 알고리즘이 달라서 그럴까요 ? (강의는 출력 2개)@Override public int compareTo(MyUser o) { System.out.println(this + "vs " + o); return this.age < o.age ? -1 : (this.age == o.age ? 0 : 1); }MyUser{id='B', age=10}vs MyUser{id='A', age=30}MyUser{id='C', age=20}vs MyUser{id='B', age=10}MyUser{id='C', age=20}vs MyUser{id='A', age=30}MyUser{id='C', age=20}vs MyUser{id='B', age=10}
-
해결됨김영한의 실전 자바 - 기본편
객체지향프로그래밍 파트 관련 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요,강사님의 좋은 강의 감사드리며, 열심히 듣고 있습니다.다름 아니라, MusicPlayerMain3 관련 질문드립니다.우선 관련 코드를 보여드립니다.MusicPlayerData data = new MusicPlayerData();on(data);volumeUp(data);volumeUp(data);volumeDown(data);showStatus(data);off(data);}static void on(MusicPlayerData data){data.isOn = true;System.out.println("음악 플레이어를 실행합니다.");}static void off(MusicPlayerData data){data.isOn = false;System.out.println("음악 플레이어를 종료합니다.");}이 코드에서volumeUp과 volumeDown 메서드는 반환 타입이 void입니다.main 메서드 안에는 볼륨 관련 메서드를 호출하고 있고,따로 메서드 호출 결과를 저장할 변수는 선언되어 있지 않습니다.그럼에도 volume 값이 메서드 호출 이후 지속적으로 업데이트 되는 것은,기본적으로 main 메서드에서 생성한 data가 참조값을 갖고 있고, 메서드의 매개변수 역시 data와 같은 참조값을 갖고 있으므로, 따로 return type과 저장할 변수를 선언하지 않았어도 참조값이 가르키는 인스턴스의 value 값이 volumeUp, Down 메서드 호출 할 때마다 업데이트 되는 것인가요? 또한 만약 같은 코드가 기본형을 다루는 메서드 였다면 값이 업데이트 되지 않는 것인지 확인하고 싶습니다.제가 이해한 것이 맞는지 확인하고 싶습니다.감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
섹션7 조회한 빈이 모두 필요할 때 List, Map이 null로 나옵니다
제목 그대로 테스트 케이스 진행시List와 Map이 모두 null로 조회되어 테스트 오류가 발생합니다package hello.core.autowired.allbean; import hello.core.discount.DiscountPolicy; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.order.AutoAppConfig; import org.assertj.core.api.Assertions; 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.*; 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); int rateDiscountPrice = discountService.discount(member, 20000, "rateDiscountPolicy"); assertThat(discountPrice).isEqualTo(2000); } static class DiscountService { private final Map<String, DiscountPolicy> policyMap; private final List<DiscountPolicy> policyList; public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policyList) { this.policyMap = policyMap; this.policyList = policyList; System.out.println("policyMap = " + policyMap); System.out.println("policyList = " + policyList); } public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); } } }java.lang.NullPointerException: Cannot invoke "hello.core.discount.DiscountPolicy.discount(hello.core.member.Member, int)" because "discountPolicy" is null이라는 오류가 발생하는데 어느 부분이 문제인가요
-
미해결김영한의 실전 자바 - 중급 2편
shuttle.showinfo를 호출시 실행창 질문
package generic.test.ex3 object UnitPrinter { //제네릭 메서드 fun <T : BioUnit>printerV1(t: Shuttle<T>){ println(t.showInfo()) } fun printerV2(shuttle: Shuttle<out BioUnit>){ println(shuttle.showInfo()) } fun <T : BioUnit>printerV3(t: Shuttle<T>){ val unit = t.out() println("이름: ${unit.name} hp:${unit.hp}") } fun printerV4(shuttle: Shuttle<out BioUnit>){ val unit = shuttle.out() println("이름: ${unit.name} hp:${unit.hp}") } }자바와 코틀린은 100퍼센트 호환이 된다고 해서 코틀린으로 강의를 보고있습니다.강의에선 v1과 v2로 인자로 받은 셔틀에서 unit을 꺼내어 내용을 출력했는데요. 그렇게 안하고 셔틀에서 바로showinfo를 호출해서 실행창에name : 마린 hp : 40kotlin.Unitname : 마린 hp : 40kotlin.Unit이렇게 줄바꿈으로 kotlin.Unit이라는게 자동적으로 붙는데 왜이런건가요 . 강의에서처럼 unit을꺼내어서 출력하면 안붙습니다.
-
해결됨객체지향 개념에 바탕을 둔 JAVA 프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
해결됨객체지향 개념에 바탕을 둔 Modern C++프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
해결됨자바 프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
해결됨C++ 프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
수업내용 중 환경변수 JAVA_HOME 에 설정값 관련문의
컴퓨터 돋보기에서 시스템 환경변수 편집 >고급 > 환경변수 들어가서 환경변수 JAVA_HOME을 최초엔 C:\Program Files\Java\jdk-8.0.345.1-hotspot\라고 설정되어있는데강의 마지막부에 갑자기 여 끝에 마지막에 bin 붙이셨는데 저도 따라 수정해서 bin 붙여야하나요?이미 "PATH"에 %JAVA_HOME%\bin 이 되어 있는데요?
-
해결됨김영한의 실전 자바 - 중급 1편
문제풀이2 TestString7 공백제거 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 공백 제거 풀이를 보면서 의문이 생겨서 질문을 남깁니다.공백 제거 하는것 을 보면 trim 메서드, strip 메서드가 있는것을 확인 할수가 있는데요.왜 굳이 이렇게 나눈 이유가 뭘까? 라는 생각이 듭니다.그냥 strip으로 통일해서 없애면 되는게 아닌가?라는 생각이요.이렇게 나눈 이유가 있을 것 같은데...이유를 알려주실수 있으신가요? 그리고 현업 에서는 trim 메서드 만 사용하는지 아니면 strip 메서드만 사용하는지 아니면 혼용해서 사용하는지 알고 싶네요.답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 중급 2편
해시 알고리즘6 - 해시 충돌 구현 메모리 구조 관련 질문드립니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님 항상 정성이 담긴 강의해주셔서 대단히 감사합니다:)다름이 아니라 해당 부분 강의를 들었을 때 LinkedList와 배열의 조합으로 메모리 구조가 잘 떠오르지 않아서 제가 생각한 부분이 맞는지 질문드리는 점 양해 부탁드립니다(_ _)LinkedList 인덱스 배열[9] 부분에 9와 99가 같이 들어가는데요, 영한님께서 설명해주셨던 LinkedList 강의 부분 메모리 구조 그림으로 예를 든다면 배열[9] 부분에 노드가 이런식으로 두 개가 생성되는 것이 제가 이해한 부분이 맞을지 질문드립니다!항상 감사합니다 :))
-
미해결김영한의 실전 자바 - 중급 1편
NestedOuter.Nested의 인스턴스를 생성했을 때
ctrl + alt + V 를 사용하여 자동 완성을 시키면 import가 생성되면서 이렇게 변합니다. 강사님의 화면에선 자동완성 시 NestedOuter.Nested 타입으로 생성되고 import 가 생성되지 않는데 이유를 알 수 있을까요...?=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
강의내용 중 Fake Repository 질문
안녕하세요. 강의 잘 듣고있습니다.제가 요즘 TDD에 대해서 이제 막 공부를 시작했습니다. 테스트방법에 대해서 mocking, stubbing이 있더라구요. 강의 내용 중 말씀해주신 FAKE 객체를 만들어서 테스트하는 방식이 Stubbing 방식이란 같은 것일까요? 실무에서도 Mockking 보다는 Stub객체를 만들어서 테스트하는 경우가 더 많은가요?아직 mocking과 stub객체를 사용해서 테스트 하는 방식의 차이나 목적이 이해가 잘 되지 않아서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
맞는 질문인지는 모르겠는데
[질문 내용]싱글톤 패턴으로 객체를 하나만 생성해서 용량적으로 효율적이다라는 관점은 받아들여졌는데, 만약 수많은 요청자가 클래스 영역의 해당 하나의 객체(싱글톤 객체)를 가져다 쓰기 위해서는 줄을 서야해서 속도가 저하되지 않을까요? 멀티쓰레드 같은 개념이 아직 부족해서일까요?아니면 PC의 운영체제는 시분할 방식이기에 어쨌든 동시에 실행되는 것 같아도 잘게 쪼개서 실행하는 논리에서 연관성이 있을까요?답변주시면 감사하겠씁니다:)
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
3번 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]문제 3번에서 마지막 12행 else부분부터 이렇게 해버렸는데 이러면 역시 완전히 틀렸다고 보는게 좋을까요?else if (dollar > 0) { System.out.println("환전 금액은 " + dollar * 1300 + "원 입니다."); }
-
미해결김영한의 실전 자바 - 중급 2편
Queue질문
안녕하세요.Queue 질문이 있어서 글 씁니다.add()와 offer()remove()와 poll() 은 각각 동작도 같고 반환 타입도 같던데 검색해보면 예외를 발생시키느냐 마냐의 차이라고 나와서요. 실제로 offer() 까보면 return add()라고 되어 있기도 하고 ...무슨 차이인지 그리고 어떨 때 어떤 걸 쓰는 게 좋을지 보충 설명 부탁드립니다.