묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 기본편
다형성 문제 풀이2번 - 한번 봐주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 저한테는 아직도 짜증이 나고 신경질 나게 하는, 다형성 문제 풀이 2번을 드디어 풀었는데.. 역시 코드 가 좋은 코드인지 안 좋은 코드인지 확인을 받고 싶은게 사람의 심리인가 봅니다. 혹 여기서 개선 할점 이나 나쁜게 보인다면 지적해 주시기 바랍니다.답변 부탁 드립니다.(해답 풀이는 안보고 Car를 좀 참고하기는 했습니다., 그리고 고수 분들에게는 꾸질수도 있으니 좀 양해 바랍니다.)-추가 그리고 80퍼 이해하면 프로그랭밍 적성이 맞는다고 하였는데 영한님 관점에서 80%입니까? 아니면 저희들이 이해하고 있는 관점에서 80%인가요...??
-
해결됨스프링 핵심 원리 - 기본편
프로토타입 빈과 스프링 컨테이너
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 프로토타입 빈 관련 궁금한 게 있습니다!프로토타입 빈 같은 경우 스프링 컨테이너가 프로토타입 빈 요청을 받으면 생성하고반환만 하지 관리를 하는 게 아니기 때문에 @PostConstruct 애노테이션이 붙은 초기화 메서드는 동작을 하지만 @PreDestroy 가 붙은 소멸 메서드는 동작을 안 하는 걸로 알고 있습니다.하지만 싱글톤 빈에 의존관계가 주입되어 있는 프로토타입 빈은 스프링 컨테이너가 싱글톤 빈을 관리하는 것처럼 주입된 프로토타입 빈 또한 관리를 하고 관련 요청에 대해서 인스턴스를 반환하니까 싱글톤 빈에서 사용하는 프로토타입 빈 관련 동작도 가능하다고 생각하는데 왜 컨테이너를 종료해도 프로토타입 빈의 소멸 메서드는 동작을 안 할까요?
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 자동 등록 방식에서의 @Configuration
(@Bean을 통해 스프링 빈을 수동 등록하는 방식이 아닌) 컴포넌트 스캔을 통해 자동 등록하는 방식을 사용할 때도 @Configuration이 붙은 클래스에 CGLIB가 적용되나요?컴포넌트 스캔 방식을 사용하는 AutoAppConfig 클래스 내부에는 아무런 코드도 존재하지 않고, 그렇다면 AutoAppConfig@CGLIB에서 오버라이딩할 메서드가 존재하지 않습니다. 기존에는 오버라이딩된 메서드 내에 싱글톤을 보장하는 코드가 담겨 있었는데, 이 방식은 메서드가 아닌 클래스 단위로 스프링 빈을 등록하므로 CGLIB를 적용할 필요가 없어 보입니다.
-
미해결스프링 핵심 원리 - 기본편
빈 등록과 의존관계 주입 순서
스프링 빈과 의존관계 주입의 순서에 대해 질문드리고자 합니다. @ComponentScan에 의해 스프링 빈을 등록하고, @Autowired를 통해 의존관계 자동 주입이 이뤄진다고 하셨습니다. 그런데, MemberServiceImpl 객체가 생성되기 위해서는 우선 의존관계 주입이 이뤄져야 합니다(생성자 호출). 순서를 따지자면 @Autowired에 의해 의존관계 자동 주입 -> 객체 생성 -> 스프링 빈으로 등록이라고 생각하는데요. (1) 스프링 빈 등록 (2) 의존관계 주입이라는 두 과정은 순서가 없이 섞여서 진행되는 것인지, MemoryMemberRepository와 RateDiscountPolicy와 같이 의존관계 주입이 필요없는 모든 빈을 등록하고 이후에 의존관계 주입이 필요한 클래스에 대해 의존관계 주입과 스프링 빈 등록이 섞여서 진행되는 것인지, 스프링 빈 등록과 의존관계 주입의 순서를 따지는게 큰 의미가 없는 것인지에 대해 여쭤보고자 합니다. 이전 강의에서 두 과정이 순서대로 일어난다? 섞여서 일어난다? 라는 강의를 들었던 것 같은데 이 부분이 헷갈려서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
메서드 뿐만 아니라 클래스 자체를 스프링 빈으로 등록 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 섹션 5의 "컴포넌트 스캔과 의존관계 자동 주입 시작하기" 강의 듣다가 궁금증이 생겨서 글 남깁니다.이전 강의들에서 @Configuration 이 붙은 클래스를 구성 정보로 등록하고,해당 클래스 내부의 @Bean 이라는 애너테이션이 붙은 메서드들을 스프링 빈에 등록한다고 이해했습니다. 근데, 구성 정보로서 등록할 클래스 앞에 @ComponentScan 애너테이션을 붙이고,스프링 빈으로 등록할 클래스 앞에 @Component 애너테이션을 붙이는 부분이 잘 이해가 되지 않습니다. 스프링 컨테이너에 빈으로 등록할 수 있는 건 메서드(@Bean 처럼) 뿐만 아니라,클래스 자체(@Component) 를 통째로 빈으로 등록할 수 있는건가요? 만약 클래스 자체를 통째로 빈으로 등록할 수 있다는 말씀이시라면,@Component 애너테이션이 붙은 클래스 내부에 있는 모든 메서드들과 변수들을 자동으로 빈으로 등록한다는 것이고,이것들을 .getBean() 메서드를 통해 조회할 수 있다는 것인가요?
-
해결됨김영한의 실전 자바 - 중급 1편
Class 클래스 강의 질문
class 클래스 강의에서 나온 클래스 생성 할때 쓰는 .getDeclared constructer().newInstance() 와new 키워드로 객체인스턴스 생성하는게 어떤 차이점이 있나요 ?
-
해결됨스프링 핵심 원리 - 기본편
5분대부터 말씀하신 테스트에 대한 질문
안녕하세요 영한님. 강의 너무 잘 듣고 있습니다.다름이 아니라 강의 듣다가 테스트 코드의 중요성을 말씀해주셨는데, 궁금한 점이 있어서요 단위 테스트를 작성하는 것이 좋다단위 테스트는 스프링이나 DB를 활용하는 것이 아니다이렇다면, 단위 테스트할 때는 Fake 객체를 사용해서 단위테스트를 작성해야 하는 걸까요? 인터페이스로 역할과 구현이 분리된 상태에서 MemberRepository의 구현체를 프로덕션에서 사용하는 MemoryMemberRepository, 테스트 환경에서 사용할 FakeMemberRepository로 분리해서 사용하는 걸까? 하는 궁금함이 있어 여쭈어봅니다 항상 좋은 강의 감사합니다!!
-
미해결스프링 핵심 원리 - 기본편
10분쯤 에러....
뭐가 문제일까요?? 해결하고 집에 가고 싶어요ㅠㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
다양한 의존관계 주입 방법에서 AutoAppConfigTest를 실행하면,
왜 OrderServiceImpl 가 실행되나요?? memberService가 실행되고 끝 아닌가요?
-
미해결김영한의 실전 자바 - 중급 1편
열거형
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.public class ClassGrade {public static final ClassGrade BASIC = new ClassGrade(); //classGrade.basic x001public static final ClassGrade GOLD = new ClassGrade(); //classGrade.gold x002public static final ClassGrade DIAMOND = new ClassGrade(); //x003private ClassGrade(){}}에서ClassGrade BASIC,ClassGrade GOLD, ClassGrade DIAMON 를 사용했는데, BASIC 등 다른 변수들에 객체값을 담을려고 만드는 거면, ClassGrade BASIC말고 다른 class를 예로들면 Grade를 만들어서 Grade BASIC = new Grade()로 만들어도 되는지 궁금해서 질문드립니다 !1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨스프링 핵심 원리 - 기본편
강의 7분,9분에서 출력이 안돼요
김영한 강사님처럼 system.out.println 결과가 안 뜹니다
-
미해결김영한의 실전 자바 - 기본편
문제와풀이2번 출력
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.package poly.expay; public class PayService{ public void processPay(String name, int amount) { boolean result; System.out.println("결제를 시작합니다: " + "option = " + name + ", amount = " + amount); if(name.equals("kakao")) { KakaoPay kakaoPay = new KakaoPay(); result = kakaoPay.Pay(amount); } } }다름이 아니라 result값에 kakaoPay.Pay(amount)를 넣는건 알겠는데 그반환값도 true로 되구요 근데 왜 메인에서 출력이 되는건가여? 제가 생각하기로는 result = true라고 생각을 하였는데, 따로 출력을 하기위해선 kakaoPay.Pay(amount); 만 써야 출력이 되지 않나요? 아님 result에 값을 대입함과 동시에 출력도 되는지요.
-
미해결김영한의 실전 자바 - 중급 1편
도와주세요!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]질문있습니다!Address address = new Address("서울");MemberV1 memverA = new MemberV1("회원A", address);System.out.println("memverA = " + memverA);이렇게 했을떄memverA.toString이 되어 public String toString() {return "MemberV1{" +"name='" + name + '\'' +", address=" + address +'}';} memverA에 toString으로 메서드오버라이딩된게 실행이 되는데여기 address는 참조값이기떄문에 또 address.toString을 찾아서가서 adress에 toString을 반환하는건가요? 이부분을 그림으로 그려도보고 해도 잘 안그려져서 혹시 설명가능할까요 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
static 영역 및 객체 생성
강의자료에 'static 영역에 객체 instance를 미리 하나 생성해서 올려둔다.'라고 되어있는데요. heap 영역에 SingletonService 인스턴스를 생성하고 이 인스턴스에 주소값이 static 영역에 저장된다는 말이 맞을까요?? static 변수라도 객체 인스턴스는 heap 영역에 저장되는게 맞을까요?
-
미해결김영한의 실전 자바 - 중급 1편
컴파일이 다르게 나와요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. package lang.String.Clazz; public class ClassCreateMain { public static void main(String[] args) throws Exception { //Class helloClass = Hello.class; Class helloClass = Class.forName("lang.clazz.Hello"); Hello hello = (Hello) helloClass.getDeclaredConstructor().newInstance(); String result = hello.hello(); System.out.println("result = " + result); } } package lang.String.Clazz; public class Hello { public String hello() { return "Hello!"; } }강의에선 컴파일 결과로 result = hello!가 나오는데, 저는Exception in thread "main" java.lang.ClassNotFoundException: lang.clazz.Hello at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:421) at java.base/java.lang.Class.forName(Class.java:412) at lang.String.Clazz.ClassCreateMain.main(ClassCreateMain.java:6)가 나와서 질문드립니다.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨김영한의 실전 자바 - 기본편
코드 이렇게 만들어도 되는지요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 복습을 하는 도중. animl들의 울음소리 행동 이런것들을 집어넣자??(정확히 기억이 안나네요 만드면서 까먹음..) 생각이 들어서 만들었는데, 이렇게 코드를 만들어도 되는지 확인을 받고 싶어서 이렇게 글을 남깁니다.(추가 쓰고 나서 생성자 막는게 생각나서. private 넘)이렇게 만들었는데 어떤가요? 답변 부탁 드립니다.
-
해결됨모든 개발자의 실무를 위한 올인원 기본기 클래스
코드 github
실전프로젝트에서 사용한 코드를 볼수있는 github 주소가있을까요?? 제가 못찾는건가요 ㅠㅠ
-
미해결모든 개발자의 실무를 위한 올인원 기본기 클래스
alembic, dto 위치
안녕하세요!! alembic 을 적용할때는 infrastructure - database - alembic 폴더 이런식으로 구조짜면되는건가요?? 또 dto 는 어디에 위치해야하나요? dto, domain entity, orm entity 모두 필요한거아닌가요?!?! 강의에 dto 가 없어서 헷갈려서 질문드립니다...!! 혹시 domain entity 를 dto 개념으로 사용하신건가요??
-
미해결김영한의 실전 자바 - 기본편
인스턴스 질문
public class Main { public static void main(String[] args) { Static11 peo1 = new Static11("one") ; Static11 peo2 = new Static11("two") ; Static11 peo3 = new Static11("three") ; } } public class Static11 { private String name ; public static int count ; public Static11(String name){ this.name = name ; count++ ; } } 이렇게 2개의 클래스가 있을때 , how many distinct instances of name, count 를 물으면 count 는 1개이고, name 은 3개인가요 ?
-
해결됨스프링 핵심 원리 - 기본편
컴포넌트 스캔 getBean()에 관한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.각 구현 클래스에 @Component 표기하고 테스트 코트에서 AutoappConfig를 설정 정보로 입력하는 것까지는 이해가 갑니다. 다만 , @Bean과 다르게 @Component는 각 구현클래스에 작성했는데 getBean에 왜 (MemberService.class)가 들어가고 검증코드 또한 MemberService.class인지 이해가 가지 않습니다.