월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 핵심 원리 - 기본편
혹시 강의 내용 개인 노션에 올려도되나요?
개인 노션에 공부한 내용을 작성하고 있는데 강의한 내용의 그림이나 글을 작성해도 되나요? 전부 복사 붙여넣기가 아닌 요약등으로 올리고있습니다
- 해결됨스프링 핵심 원리 - 기본편
섹션3. 스프링핵심원리 이해 강의내용질문
의존관계 주입을 사용하면 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다. 의존관계 주입을 사용하면 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경 할 수 있다. 결국 이 두문장은 똑같은 말 아닌가요? 클라이언트 코드를 변경하지 않는다 == 정적인 클래스 의존관계를 변경하지 않는다클라이언트가 호출하는 대상의 타입 인스턴스를 변경할수있다 == 동적인 객체 인스턴스 의존관계를 쉽게 변경할수있다. 결국 실행이 되는부분은 클라이언트코드니까 동적으로 실행될때 정적인 클래스 의존관계가 유지가 되겠고,인스턴스가 변경할 수 있다는 의미는 런타임중에 정률 할인 정책으로 될지, 정액 할인 정책으로 될지가 동적인 인스턴스의 관계를 변경할수있다는 의미로 들려서 결국 두문장은 같은의미로 사용되지않았나 싶습니다
- 미해결스프링 핵심 원리 - 기본편
List, Map 으로 빈 조회 할 때
AutoAppConfig.class를 넣으면 빈 값이 나와야 하는데 안 나와서 문의 드립니다..!
- 해결됨스프링 핵심 원리 - 기본편
질문이 있습니다.
1.ComponenetScan하는 부분에서 어차피 해당부분은 Bean관리를 직접해주지않는데 Configruation을 적어주는 이유가 뭔가요??2.테스트코드에서 다른 Appconfig의 경우에는멤버변수로 스프링 컨테이너를 설정했지만 컴포넌트 스캔을 사용하는경우에는 메소드 내부에서 스프링 컨테이너 객체를 설정했는데 이유를 알수있을까요?public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext(SameBeanConfig.class);public class AutoAppConfigTest { @Test @DisplayName("컴포넌트 스캔 테스트") void componentScan(){ ApplicationContext ac=new AnnotationConfigApplicationContext(AutoAppConfig.class); MemberService memberService=ac.getBean(MemberService.class); Assertions.assertThat(memberService).isInstanceOf(MemberService.class); }
- 미해결스프링 핵심 원리 - 기본편
싱글톤 관련해서 궁금한점이 있습니다.
@Configuration static class SameBeanConfig{ @Bean public MemberRepository memberRepository1(){ return new MemoryMemberRepository(); } @Bean public MemberRepository memberRepository2(){ return new MemoryMemberRepository(); } }@Test @DisplayName("타입으로 조회시 같은 타입이 둘이상 있을경우 빈이름으로 조회하면 가능함") void findBeansName(){ MemberRepository memberRepository1=ac.getBean("memberRepository1", MemberRepository.class); MemberRepository memberRepository2=ac.getBean("memberRepository2", MemberRepository.class); org.assertj.core.api.Assertions.assertThat(memberRepository1).isEqualTo(memberRepository2); }만약에 이렇게 빈을 등록하고 사용하는경우에는 사실상 싱글톤 패턴은 아니기때문에 예시를 보여주기위해서만 사용하셨을뿐 실무에서는 저런식으로 사용을 안한다고 이해해도될까요?
- 미해결스프링 핵심 원리 - 기본편
복습 하던중 궁금한 사항이 생겨 질문드립니다.
섹션 2 부분에서 MemoryMemberRepository의 부분의 store를 정적 변수로 설정한 이유가 만약 멤버변수로 선언하게되면 MemberServiceImpl , OrderServiceImpl에서 각가 의존하는 MemoryMemberRepository내부의 store 객체도 달라지기때문에정적 변수로 설정하신걸까요?
- 해결됨스프링 핵심 원리 - 기본편
request 스코프 에러에 대해서 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]김영한님이 하신 그대로 작성하여 Scope를 request에 맞춰서 컨트롤러와 서비스를 만들어 스프링 부트를 작동한 경우 로그에서 에러가 발생하셨습니다.똑같이 코드를 작성하였음에도 이상하게 정상적으로 스프링 부트가 실행이 되고 있고 스크린샷으로 첨부는 하지 않았으나 Debug로 로그 범위를 확장하였음에도 해당 오류 ('request 스코프 예제 만들기' 강좌 14:30 직후)에 대해서 확인이 안되고 있습니다.
- 미해결스프링 핵심 원리 - 기본편
왜 순수한 자바로 테스트 해야 하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]1. 제목과 같은 내용입니다. 강의 어느 편인가 해당 내용에 대해서 짧게 답변 해주신 부분을 어렴풋이 본거 같은데 잊어서 질문 드립니다. 해당 질문에 대한 답변 또는 관련 영상을 혹시 아신다면 감사 드릴거 같습니다.2. 해당 질문에 대한 원인은 다음과 같습니다. 순수한 자바 코드가 스프링 프레임워크를 포함한 것보다 상대적으로 작은 범위여서 일단 공통 부분인 자바 파트에서 테스트를 하고 그 다음 스프링으로 가는 것이 맞겠다는게 처음 생각이었습니다. 근데 문득 이게 맞나 ? 명확한 근거가 아닌 저의 추측에 기반한 근거였기 때문에 1번의 설명과 같이 모호해서 질문을 드립니다.개발자인데 아직도 문서를 두서 없이 작성합니다.해당 부분에 있어 양해를 구합니다.읽어주셔서 감사합니다.
- 해결됨스프링 핵심 원리 - 기본편
Autowired 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]의존관계 자동주입에 대해 정리를 하던도 중 제가 이해한것이 맞는지 궁금하여 질문드립니다. 컨테이너에 빈을 등록하는 방법에는 대표적으로,1.컴포넌트 스캔을 통해 등록하는 방법2. 자바설정클래스를 통해 등록하는 방법3 xml 파일을 통해 등록하는 방법이 있고 이때 의존관계주입을 2번과 3번에서는 직접 구현체를 정의? 해주었지만컴포넌트 스캔을 사용할때 의존관계주입을 (OCP와 DIP 원칙을 지키며) 해주기 위해선 @Autowired 을 사용해야한다. 그리고 @Autowired 을 해주는 방법에는 아래와같은 방법이 있다.생성자주입필드주입setter 주입일반메서드 주입이렇게 이해하였는데 제가 이해 한 것이 맞나요?
- 미해결스프링 핵심 원리 - 기본편
Test 오류..!
안녕하세요. 테스트 오류가 나서 질문 드립니다 !어디 부분을 수정해야 할지 모르겠습니다 ㅠㅠ package hello.core.order;import hello.core.acnnotation.MainDiscountPolicy;import hello.core.discount.DiscountPolicy;import hello.core.member.Member;import hello.core.member.MemberRepository;import lombok.RequiredArgsConstructor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;@Componentpublic class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository ; private final DiscountPolicy discountPolicy ; @Autowired public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOrder(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; }}
- 미해결스프링 핵심 원리 - 기본편
request스코프와 컴포넌트 스캔
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 복습 중 궁금한 점이 생겨서 질문드립니다. 컴포넌트 스캔을 하게 되면 @component annotation이 붙은 객체를 스프링빈으로 등록해주는 것으로 알고 있습니다. 그런데 이 객체가 request 스코프일 경우 request요청이 있어야 스프링 빈으로 등록이 가능하다면 처음 스프링 애플리케이션을 실행할 때 @Component가 붙은 객체를 탐색하면서 @Scope("request")가 붙어있다면 스프링 컨테이너가 이 객체는 스프링빈으로 등록하지 않고 넘어가는 것인지 궁금합니다!
- 미해결스프링 핵심 원리 - 기본편
spring initializr 에서 자바 버전11이 없는데 어찌해야 하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]spring initializr 에는 자바 버전이 21과 17만 있던데요 다른 질문들 댓글 살펴봤더니 스프링부트 3버전으로 하면 17로 해도 된다던 댓글을 봤습니다. 정말 괜찮은건지 아니면 마이그레이션을 해서 부트 2버전대로 해야 하나요?감사합니다.
- 미해결스프링 핵심 원리 - 기본편
옵션 처리
안녕하세요.테스트 진행 중 setNoBean1메서드를 required = false로 처리한 경우 호출되지 않아야 하는데저는 호출 된 상태에서 null값이 나오고 Bean2메서드가 호출되지 않았습니다 ㅠㅠ어떤 게 잘못 된걸까요 ㅜㅜ?
- 해결됨스프링 핵심 원리 - 기본편
중복오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.중복 오류가 떠서 제가 생각할 때는 AutoAppConfig에서도 빈에 올리고 AppConfig에서도 빈에 올리니까 이중으로 올려서 그런 것 같습니다.그래서 중복으로 올리는 @Bean을 지워봤는데 rateDiscount에서도 오류가 뜹니다 코드에 잘못된 부분이 있을까요..? 코드는 아래에 있습니다.https://drive.google.com/file/d/1bkiOBsAqY9TZ0dZnuh6LmQXizHIcJryx/view?usp=sharing
- 미해결스프링 핵심 원리 - 기본편
request 스코프 질문입니다.
1.클라이언트 A가 HTTP request를 Controller에 요청한다.Controller은 request scope에 요청하여 빈 인스턴스가 생성된다.클라이언트가 동일한 HTTP request를 Service에 보내면 기존에 이미 만들어진 A 전용 빈 인스턴스를 사용한다.클라이언트 B가 HTTP request를 요청하면 마찬가지로 B 전용 빈 인스턴스가 만들어지고 위와 동일한 과정을 거친다.로 이해하면 될까요? 2.여기서 message가 하는 기능은 무엇이고, init()과 close() 메소드 내에서 this를 왜 넣어줬는지 궁금합니다. 3.여기서 provider이 왜 해결방법인지 이해가 안갑니다... provider가 DL기능을 하는 거로 아는데, 어차피 이때도 사용자의 요청을 받은 상태가 아니기 때문에 오류가 발생하는거라고 생각했습니다.
- 해결됨스프링 핵심 원리 - 기본편
Annotationconfigapplicationcontext 클래스의 생성자 설명
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]위와 같이 AnnotationConfigApplicationContext 클래스 내부 API를 보면 많은 생성자들이 오버로딩 되어있는데 각각의 생성자 기능이 정확히 어떤 건지 궁금합니다 !특히 그냥 설정 정보 클래스를 하나 지정했을 때와 여러 개의 클래스를 지정했을 때 어떤 차이가 있는지 궁금합니다!
- 미해결스프링 핵심 원리 - 기본편
Provider 오류
스프링 부트 버전이 3.2.0 이라서 다음과 같이 라이브러리를 추가했는데도 Provider이 안뜹니다. 어디가 문제 일까요?
- 미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔에서 @Bean이 붙은 메서드에 관한 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 강의 보다가 궁금해서 질문드립니다.AutoAppConfigTest파일의 @Bean이 붙은 메서드에서 반환타입이 MemberRepository라면 첨부 파일과같이 (강의와같이) 에러가 발생하는데 반환타입을 MemoryMemberRepository로 하면 문제없이 잘 실행되는것을 확인헀습니다. Bean의 이름을 memoryMemberRepository로 해놓았으므로 반환타입에 관계없이 에러가 나올줄 알았는데 왜 정상실행되는지 알려주셨으면 감사하겠습니다.
- 해결됨스프링 핵심 원리 - 기본편
싱글톤과 프로토타입 빈 사용 시 질문입니다.
여기서 count가 1이 아닌 2가 되는 이유가,싱글톤이 생성되고 의존 관계가 주입되는데, 이때 프로토타입 빈을 요청한다. 이때 프로토타입 빈이 싱글톤에 전달되고 이 프로토타입 빈은 clientBean 안에 종료 시 까지 유지된다.사용자 A, 사용자 B가 받는 clientBean은 싱글톤이기 때문에 같다.clientBean이 다시 생성되면서 스프링 컨테이너에 프로토타입 빈을 받은게 아니라, 기존 의존관계 주입 시 받은 프로토타입 빈이 그대로 남아있기 때문에 count값이 유지된다. 만약 클라이언트 요청 시마다 clientBean을 재생성한다면 값이 1이 될 것이다.이렇게 이해해도 될까요?
- 미해결스프링 핵심 원리 - 기본편
학습 순서 및 방법에 대해 질문있습니다.
이해가 되지 않아도 일단 먼저 듣고 복습을 하는 방식으로 학습을 하고 있습니다. 1.강의 들으며 손코딩 및 필기(이해 안돼도 진도빼는 위주로)2.(강의 전체 한바퀴 돈 후)강의자료 보며 복습3.혼자 해보다가 막히면 강의자료 참고 이런 식으로 학습중인데영한님께서 올려주신 최신 로드맵 영상에서 '실전! 스프링 부트와 JPA 활용 1' 은 복습할 것을 권장해주셨는데문제는 그냥 순서대로 들으라고 하신 강의도1,2 단계까지 해도 이해가 안돼서 3까지 하고있는 중입니다.. 지금처럼 진도 나가는 것이 더디더라도 한 강의(각 챕터 말고 통째로 하나의 강의)를 제대로 이해하고 다음 강의로 넘어가는 식으로 해야할지아니면 이해가 되지 않아도 로드맵의 진도 나가는 것을 우선으로 하는 것이 좋을지 고민입니다