월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링 핵심 원리 - 기본편
스프링 빈 상속 관계에서 6분쯤 라이브코딩하는데
강사님과 똑같이 쳤는데 빨간줄이 뜨네요 뭐가 문제일까요?
- 미해결스프링 핵심 원리 - 기본편
김영한 선생님 인텔리제이 테마 설정 질문입니다
스프링 잎사귀모양이랑 클래스마다 C로 표시되게 하는 테마는 어떻게 설정할 수 있을까요? 얼티밋에서만 가능한 설정이더라도 알려주시면 감사드리겠습니다.
- 해결됨스프링 핵심 원리 - 기본편
수동 빈 등록 VS 자동 빈 등록
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수동 빈 등록 VS 자동 빈 등록을 테스트 하던 과정 속에의문점이 생겨서 질문 드립니다!AutoAppConfig를 설정 정보로 스프링 컨테이너에 넘기면1. @CompoentScan으로 @Compoent가 붙은스프링 빈들이 컨테이너에 등록 생성자 주입을 하고 있으니DI가 필요한 클래스들은 스프링 빈 등록과 동시에 DI이때 MemoryMemberRepository는memoryMemberRepository라는 이름으로 빈 등록2. AutoAppConfig에서 팩토리 메서드 방식으로수동 스프링 빈 등록 과정 진행 이때 이름을 memberRepository2 , memberRepositorymemoryMemberRepository이렇게 3번 메서드 이름을 바꿔서 진행했습니다.처음 memberRepository2로 실행했을 때는expected single matching bean but found 2: memoryMemberRepository, memberRepository2이런 에러가 발생했습니다.memberRepository와 memoryMemberRepository는에러 발생 x 수동 설정에서 생성한 객체가 사용된다는우선순위 테스트까지 완료memoryMemberRepository는 오버라이딩 된 상태memberRepository는 2개의 MemoryMemberRepository의 인스턴스가 있는 상태테스트 결과에 생기는 의문점은 자동 빈 등록 vs 자동 빈 등록에서는 이름이 같으면 에러가 발생하는데메서드 이름을 동일하게 하면 오버라이딩 된 상태로 스프링 빈에 등록 메서드 이름을 아예 다르게 하면 에러 발생이름을 부모 타입으로 캐멀 케이스를 지켜서 이름을 하면각각 다른 이름으로 같은 타입의 스프링 빈 생성왜 이런 결과가 나오는 걸까요?전부 오버라이딩 설정은 false로 진행했습니다.
- 해결됨스프링 핵심 원리 - 기본편
ac.getBean 관련 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.MemberService memberService = ac.getBean("memberService", MemberService.class);MemberService memberService = ac.getBean(MemberService.class);이 두 코드엔 무슨 차이가 있는 건가요?위의 코드로 AutoAppConfigTest를 실행하면 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'memberService' available 오류가 뜨고, 아래의 코드로 같은 테스트를 실행하면 통과합니다.
- 미해결스프링 핵심 원리 - 기본편
싱글톤 컨테이너 섹션 중 5강
안녕하세요, 현재 섹션5 중 5강을 듣고 있습니다. 싱글톤 테스트 하던 도중 memberRepository 란 빈이 등록 되지 않았다는 오류가 발생했더라구요. 어디서 에러 생긴건지 알 수 있을까요? 아래는 제 깃입니다.https://github.com/bukwon/core
- 미해결스프링 핵심 원리 - 기본편
Map, List로 빈 조회 시 질문
안녕하세요 AllBeanTest에서 List랑 Map으로 AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); 여기서 FixDiscountPolicy랑 RateDiscountPolicy를 어떻게 스프링빈으로 등록하는지 이해가 되지않습니다. 4강 스프링 빈 조회 - 동일한 타입이 둘 이상 에서 동일한 타입의 스프링빈이 두개 이상일시 에러가 발생하고, 이를 방지하기위해 빈 이름을 지정하는걸로 나와있는데 어떻게 두개를 같이가져와 map. list에 저장 할 수 있는건가요? 그리고 rateDiscountPolicy에 @MainDiscountPolicy 어노테이션이 설정되있으면 FixDIscountpolicy대신 RateDiscountPolicy만 우선으로 가져오는걸로 이해를 햇었는데 제 생각이 어디가 잘못된건지 이해가 되지않습니다. ㅠ
- 미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔의 싱글톤 관리 방식
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 에3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 김영한님 스프링 강의를 듣다가 궁금한점이 생겼습니다. 컴포넌트 스캔 방식이 아닌 직접(수동) 스프링 빈을 등록하는 방식은 설정 정보 클래스에 @Configuration 어노테이션이 붙어있지 않으면 싱글톤으로 관리가 안 되는 걸로 알고 있습니다. 그래서 @Configuration를 붙이면 그 설정 클래스를 CGLIB 라이브러리가 확장시켜서 싱글톤으로 관리하는 건데 이렇게 하면 설정 클래스 이름에 CGLIB가 붙죠 컴포넌트 스캔 방식을 활용하면 @Configuration을 안 붙여도 컴포넌트 붙은 클래스들을 자동으로 스캔해서 싱글톤으로 관리 해주는걸 확인했습니다. 그래서 @ComponentScan 이 붙은 클래스 또한 Test에서 실제 사용하는 클래스 이름을 꺼내보면 CGLIB 이름이 붙은 클래스일 거라고 예상을 했는데 예상과 다르게 보통 클래스들과 이름이 동일했습니다.제 추측은 @Component 어노테이션이 CGLIB라이브러리와 같은 역할을 하는 걸까? 라는 생각을 했는데 실제 컴포넌트 스캔 방식의 싱글톤 유지 방식은 어떤 걸까요?
- 해결됨스프링 핵심 원리 - 기본편
컨테이너 생성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 AllBeanTest 클래스에서 스프링 컨테이너 생성할 때, 구성 정보로 AutoAppConfig.class 외에도 DiscountService.class를 넣어주셨습니다.이렇게 넣어준 이유는 AllBeanTest 클래스는 Test 코드로 AutoAppConfig의 하위폴더에 속하지 않아, 따로 DiscountSerVice.class를 구성 정보로 넣어주신건가요?의존관계 자동 주입 범위를 알고 싶습니다. 구성 정보로 넣은 클래스가 속한 폴더를 포함해 하위 폴더에서 Annotation을 알맞게 기입한 클래스를 빈으로 등록하고 의존관계를 주입시켜주는게 맞을까요? DiscountService 클래스는 자동등록을 통해 빈으로 등록된건가요? 아니면 수동 등록을 통해 빈으로 등록된건가요? 전자라면 왜 @Component가 없는지 후자라면 왜 @Bean이 없는지 알고 싶습니다.
- 미해결스프링 핵심 원리 - 기본편
의존관계 주입은 어떤 형식으로도 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. DiscountService 생성자 주입을 통해 자동 의존관계 주입을 받을 때, Map과 List 형태로 의존관계를 주입 받았는데 이 형태에는 제한이 없나요?어떠한 형태로도 제가 의존관계를 주입받겠다는 annotation만 잘 적어주면, 스프링이 알아서 형식에 맞게 넣어주는건가요? Map<String, DiscountPolicy> 으로 의존관계를 주입받을 때, String은 입력받은 DiscountPolicy의 이름이 되는 것 같은데, 이렇게 입력받은 클래스의 이름을 따로 받을 수 있는 것처럼 클래스의 부가적인 정보를 알 수 있는 형식이 더 있나요?Map<int, DiscountPolicy> 이렇게 하면, 어떤 식으로 채워지나요?
- 미해결스프링 핵심 원리 - 기본편
DI에 관해 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다른 글의 서포터즈 님의 답변에서, DI는 인터페이스 뿐 아니라 구체클래스를 주입받을 수도 있다라고 하셨는데,만약 구체클래스로 생성자 주입을 한다면 DIP는 어긴 DI가 되는건가요? 그리고 DI가 맞다면 영상에서 설명해주신 의존관계 주입(DI)의 특징인 클라이언트 코드 변경을 하지않아도 된다는 것을 위반하게 되는데도 DI인 것인지 헷갈려서 질문드립니다.
- 미해결스프링 핵심 원리 - 기본편
DI에 대해 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]package hello.core.member; public class MemberServiceImpl implements MemberService { private final MemoryMemberRepository memoryMemberRepository public MemberServiceImpl(MemoryMemberRepository memoryMemberRepository) { this.memoryMemberRepository = memoryMemberRepository; } public void join(Member member) { memoryMemberRepository.save(member); } public Member findMember(Long memberId) { return memoryMemberRepository.findById(memberId); } }인터페이스가 아닌, 구체적인 클래스를 생성자를 통해 주입한다면 이것은 추상적인 인터페이스가 아니므로 DIP를 위반했지만 의존성을 외부에서 주입했으니 DI라고 할 수 있는 건가요? 아니면 DI가 애초에 인터페이스 같은 추상클래스를 외부 주입하는 건가요? 헷갈려서 질문드립니다!
- 미해결스프링 핵심 원리 - 기본편
request scope과 aop
[질문 내용]안녕하세요. 강의를 매우 잘 듣었습니다. 강의를 듣던중 scope를 request로 설정하고 로그를 기록을 알려주셨던 부분에서 궁금증이 생겼습니다. 요청마다 uuid를 활용하여 로그를 기록하는 것은 aop를 활용한다면 scope 설정 없이도 가능할 것이라 생각이 드는데 scope를 지정하여 활용하는 방식만의 이점이 있을가요?
- 미해결스프링 핵심 원리 - 기본편
ConfigurationSingletonTest 테스트 실행시 오류
에러 문장이고 OrderServiceImpl의 타입의 변수 orderService에서 method getMemberRepository()를 찾을 수 없다는 뜻같은데 OrderServiceImple의 .getMemberRepository()에서 에러가 납니다.OrderServiceImpl을 가니이상이 없는거 같은데 잘모르겠습니다.
- 해결됨스프링 핵심 원리 - 기본편
configurationTest 인스턴스
public class ConfigurationSingletonTest { @Test void configurationTest() { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberServiceImpl memberService = ac.getBean("memberService", MemberServiceImpl.class); OrderServiceImpl orderService = ac.getBean("orderService", OrderServiceImpl.class); MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class); MemberRepository memberRepository1 = memberService.getMemberRepository(); MemberRepository memberRepository2 = orderService.getMemberRepository(); System.out.println("memberService -> memberRepository = " + memberRepository1); System.out.println("orderService -> memberRepository = " + memberRepository2); System.out.println("memberRepository = " + memberRepository); Assertions.assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); Assertions.assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); } }public MemberRepository getMemberRepository() { return memberRepository; }public MemberRepository getMemberRepository() { return memberRepository; }MemberServiceImpl, OrderServiceImple 둘 다 위의 코드처럼 getMemberRepository까지 다 만들었는데 인스턴스가 다르게 나오는 이유는 뭘까요?
- 미해결스프링 핵심 원리 - 기본편
DiscountPolicy discount()의 매개변수 관련 질문
public interface DiscountPolicy { /** * * @return 할인 금액 */ int discount(Member member, int price); }discount()의 매개변수 int price는 FixDiscountPolicy에서는 사용되지 않고 RateDiscountPolicy에서만 사용됩니다. 모든 구현 클래스에서 사용되지는 않는 매개변수를 인터페이스에 선언했다는 점이 잘 이해가 되지 않습니다. 모든 구현 클래스에서 사용되지 않는 매개변수를 인터페이스 level에 선언해도 괜찮은 것인지 여쭤보고 싶습니다.
- 해결됨스프링 핵심 원리 - 기본편
모든 빈 출력에서 에러가 떠요
2분 30초에 런 해보는데 에러가 나옵니다. 파일 추가하라는 것도 했고 다 했는데 에러가 떠요깃허브에 코드도 올렸는데 이것도 참고해주세요...!
- 미해결스프링 핵심 원리 - 기본편
Order의 할인 금액, 주문 금액 관련 질문
public class Order { private int discountPrice; // 할인금액 public int calculatePrice() { // return: 주문금액 return itemPrice - discountPrice; } }(1) 주문 금액을 필드가 아닌 메서드로 두신 이유가 정말 궁금합니다.(2) 1개의 주문에 대해서는 여러 상품이 존재할 수 있고, 하나의 상품을 여러 개 주문할 수도 있습니다. 이 예제에서는 주문 1개에 대해서, 상품 1개를 1개만 구매할 수 있다는 상황이 가정된 것인가요?
- 미해결스프링 핵심 원리 - 기본편
lombok spring 3.2.x 설치 관련 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 모름3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네[질문 내용]Java 21 버전, spring boot 3.2.1 , dependency-management 1.1.4 입니다.lombok관련해서 이슈가 있어 깔리지 않는걸까요 ? 아예 에러도 안뜹니다.
- 미해결스프링 핵심 원리 - 기본편
스프링 빈 조회 관련 질문 있습니다
"스프링 빈 조회" 내용 중 질문 있습니다.아래는 제가 질문이 있는 코드 부분입니다.class ApplicationContextBasicFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("빈 이름으로 조회") void findBenaByName() { MemberService memberService = ac.getBean("memberService", MemberService.class); assertThat(memberService).isInstanceOf(MemberServiceImpl.class); } ,,, }여기서 빈을 조회할 때는 타입을 MemberService.class로 조회하는데 조회한 빈을 검증할 때에는 MemberServiceImpl.class 로 이 타입의 인스턴스 인지를 확인하는데 이렇게 하는 이유가 AppConfig에서 memberService() 메소드가 스프링빈으로 등록될 때 아래 처럼 반환하는 객체가 MemberServiceImpl 이라서 빈에 등록될 때 MemberServiceImpl 로 등록되어서 그런건가요??@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } ,,, }직접해보니 isInstanceOf(MemberService.class)도 되더라구요.제가 아직 배우는 단계라 살짝 헷갈려요 ㅠㅠ 문장이 너무 길지만 알려주시면 감사하겠습니다 ㅠㅠ
- 미해결스프링 핵심 원리 - 기본편
Cannot invoke "hello.core.member.Member.getGrade()" because "member" is null
20번째 줄에서 오류가 발생합니다。멤버는 잘 등록된것을 확인 했습니다。discountPolicy에서 죽는것 같습니다。 관련 클래스입니다。아래 getGrage()에서 오류가 발생 하는듯