월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException에러가 안잡힙니다.
[질문 내용]여기에 질문 내용을 남겨주세요.https://drive.google.com/file/d/1fuxg2PcUZOT1bxTbwcTS5ZLdbO-Iz_M5/view?usp=drive_link현재 제 프로젝트 압축파일을 구글 드라이브에 업로드했습니다. 현재 듣고 있는 강의는 섹션7. 조회한 빈이 모두 필요할 때, List,Map입니다.듣고 있는 부분은 8분34초 입니다. https://www.inflearn.com/questions/1089023/이 답변을 참고해서 해결방안 2, 해결방안 3을 모두 적용해봤지만 오류가 해결되지 않고있습니다.어떤작업을 해야할까요..?
- 미해결스프링 핵심 원리 - 기본편
findAllBean 테스트 오류(member를 빈으로 등록하라는 오류)
[질문 내용]여기에 질문 내용을 남겨주세요. 섹션 7의 조회한 빈이 모두 필요할 때, List, Map 강의 위치 => 05:02 @Autowired에 빨간 밑줄이 가서 다른 질문글을 찾아보고 DiscountService에 @Component 어노테이션을 달아줬습니다.그래도 똑같은 오류가 뜹니다. package hello.core.autowired.allbean; import hello.core.AutoAppConfig; import hello.core.discount.DiscountPolicy; import hello.core.member.Member; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; public class AllBeanTest { @Test void findAllBean(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class, Member.class ); } //기존 orderService를 수정하면 코드 수정하기 복잡해져서 테스트용 클래스 따로 만들음. @Component static class DiscountService{ private final Map<String, DiscountPolicy> policyMap; private final List<DiscountPolicy> policies; @Autowired public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policies) { this.policyMap = policyMap; this.policies = policies; System.out.println("policyMap = " + policyMap); System.out.println("policies = " + policies); } } }org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'member' defined in file [C:\Users\hotay\OneDrive\바탕 화면\study\core\core\build\classes\java\main\hello\core\member\Member.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'java.lang.Long' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
- 미해결스프링 핵심 원리 - 기본편
도메인 객체의 의존관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]appconfig로 의존관계를 주입해서 di를 진행하고, dip를 만족한다고 배웠습니다. 그런데 지금까지으 예제에서 service나 repository의 의존관계를 다루었지만 도메인은 다루지 않을 것같아서요.만일 member 도메인 객체가 주문 히스토리 데이터를 가져야할 때, order 도메인을 의존해야하면, 이때도 따로 도메인에 대한 interface를 만들고 appconfig를 이용해 의존관계를 주입하는지 궁금합니다.
- 미해결스프링 핵심 원리 - 기본편
test 오류를 못찾겠습니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. https://drive.google.com/file/d/1eaGwuFK0ptwt7-5tXkKBmLXL6c_8wVCr/view?usp=drive_link
- 미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔과 의존관계 자동 주입 제대로 이해한건지 궁금합니다!
[질문 내용]@Configuration 이 붙은 클래스는 스프링 컨테이너에 설정 정보를 의미하는것으로 @Configuration 이게 붙은 클래스도 싱글톤이 보장되어야 하기 때문에 @Bean으로 등록되어 싱글톤을 보장하고 자동주입의 경우에 빈 이름을 @Component 에노테이션이 붙은 클래스를 빈 이름으로, 실제 의존관계 주입이되는 반환 객체를 @AutoWried 에노테이션이 붙은 생성자로 주입되는게 맞을까요?!제 머릿속에 있는 걸 그려봤는데 저런식으로 되는게 맞을까요?!
- 미해결스프링 핵심 원리 - 기본편
빈 충돌이 일어나는 테스트 오류를 못잡겠습니다ㅠㅠ
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]섹션7의 옵션처리 강의를 보며 테스트 코드를 같이 수정하고 있습니다.CoreApplication을 Run 했을 때 발생하는 오류입니다. *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found: - memoryMemberRepository: defined in file [C:\Users\hotay\OneDrive\바탕 화면\study\core\core\out\production\classes\hello\core\member\MemoryMemberRepository.class] - memberRepository: defined by method 'memberRepository' in class path resource [hello/core/AppConfig.class] 이 부분을 보고 MemoryMemberRepository 와 AppConfig와 AutoAppConfig 코드를 봤는데 뭐가 문제인지 모르겠습니다.package hello.core.member; import org.springframework.stereotype.Component; import java.util.*; @Component //빈등록될때는 앞에가 소문자로, memoryMemberRepository로 등록된다. public class MemoryMemberRepository implements MemberRepository{ private static Map<Long, Member> store = new HashMap<>(); @Override public void save(Member member) { store.put(member.getId(),member); } @Override public Member findById(Long memberId) { return store.get(memberId); } }package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; 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; //애플리케이션 전체 동작 방식을 구성(config)하기 위해 // 구현객체를 생성하고 연결하는 책임을 가지는 별도의 설정 클래스 //메서드마다 역할이 드러나게끔 한다. @Configuration //설정정보에 적어주는 어노테이션 public class AppConfig { @Bean //스프링 컨테이너에 등록이 된다. public MemberService memberService(){ return new MemberServiceImpl(memberRepository());//생성자 주입 //MemberServiceImpl이 필요로 하는 MemberRepository 의존성을 외부에서 주입 } @Bean public MemoryMemberRepository memberRepository() {//구현객체를 반환해주는 역할 return new MemoryMemberRepository(); } @Bean public OrderService orderService(){ return new OrderServiceImpl(memberRepository(),discountPolicy());//생성자 주입 } @Bean public DiscountPolicy discountPolicy(){ return new RateDiscountPolicy(); } } package hello.core; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import org.springframework.context.annotation.Bean; 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)//AppConfig를 등록하지않도록 필터링 ) //컴포넌트 스캔 일일이 @bean 등록안해도됨 public class AutoAppConfig { //수동으로 빈을 등록하면 자동 빈보다 우선권을 가지게되어 오버라이딩 된다. (충돌오류X) //최근 스프링 부트에서는 수동 빈 등록과 자동 빈 등록이 충돌나면 오류가 발생하도록 기본 값을 바꾸었다. // application.properties에 spring.main.allow-bean-definition-overriding=true를 등록하면 오버라이딩 할 수 있다. /* @Bean(name = "memoryMemberRepository") public MemberRepository memberRepository() { return new MemoryMemberRepository(); }*/ } AutoAppConfig에 강사님 말씀 처럼 빈 충돌 테스트 한 부분을 주석처리해줬고 AppConfig를 등록하지 않도록 필터링 했는데도 어디에서 오류를 잡아야할지 모르겠습니다.
- 미해결스프링 핵심 원리 - 기본편
테스트 실패: Unsatisfied dependency expressed through field 'prototypeBeanProvider'
해당 오류입니다. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'singletonWithPrototypeTest1.ClientBean': Unsatisfied dependency expressed through field 'prototypeBeanProvider': No qualifying bean of type 'javax.inject.Provider<hello.core.scope.SingletonWithPrototypeTest1$PrototypeBean>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 빈 주입이 안되어 오류가 나는 것 같아 @ComponentScan도 달아봤습니다. 빈을 못찾는다고 할까요package hello.core.scope;import jakarta.annotation.PostConstruct;import jakarta.annotation.PreDestroy;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Component;import javax.inject.Provider;import static org.assertj.core.api.Assertions.*;@ComponentScanpublic class SingletonWithPrototypeTest1 {@Test void prototypeFind() {AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class); PrototypeBean prototypeBean1 = ac.getBean(PrototypeBean.class); prototypeBean1.addCount(); assertThat(prototypeBean1.getCount()).isEqualTo(1); PrototypeBean prototypeBean2 = ac.getBean(PrototypeBean.class); prototypeBean2.addCount(); assertThat(prototypeBean2.getCount()).isEqualTo(1); }@Test void singletonClientUserPrototype(){// 스프링 컨텍스트를 생성하고 빈을 가져옴 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); ClientBean clientBean1 = ac.getBean(ClientBean.class); int count1 = clientBean1.logic(); assertThat(count1).isEqualTo(1); ClientBean clientBean2 = ac.getBean(ClientBean.class); int count2 = clientBean2.logic(); assertThat(count2).isEqualTo(1); // 같은 count가 증가함 }@Scope("singleton")@Component static class ClientBean{// ObjectProvider를 통해 싱글톤 빈과 프로토타입을 함께 사용가능 @Autowired private Provider<PrototypeBean> prototypeBeanProvider; public int logic(){PrototypeBean prototypeBean = prototypeBeanProvider.get(); prototypeBean.addCount(); int count = prototypeBean.getCount(); return count; }}@Scope("prototype")@Component static class PrototypeBean {private int count = 0; public void addCount() {count++; }public int getCount(){return count; }@PostConstruct public void init(){System.out.println("PrototypeBean.init" + this); }@PreDestroy public void destroy(){System.out.println("PrototypeBean.destroy" + this); }}}
- 미해결스프링 핵심 원리 - 기본편
Provider를 왜 사용하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ObjectProvider를 왜 사용하는지 궁금합니다.이번 강의에서 provider.getObject() 를 이용해서 객체를 가져와서 사용하고 있는데스프링 빈에 등록하지 않고 순수 자바 객체로 만든다음에new 객체(); 를 통해서 사용하면 되지 않을까요?이렇게 사용하지 않고 Provider를 사용한다면 어떤 장점이 있는지, 순수 자바객체를 사용한다면 어떤 단점이 있는지 궁금합니다..! 두 번째로는 Provider를 사용하게 되면 생성자에서 주입을 받지 않게되니 테스트용 객체를 주입해주지 못해서 테스트하기가 조금 껄끄러워질 것 같다는 생각이 들었어요.이 문제는 어떻게 해결하면 좋을까요?
- 미해결스프링 핵심 원리 - 기본편
long은 Long으로 하시는 이유?!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]선생님께서 int는 int로 하시는데 long은 Long으로 하시는 이유가 있을까요?
- 미해결스프링 핵심 원리 - 기본편
혹시 스프링 시큐리티 관련 강의 계획이 있으신지 궁금합니다!
세션과 쿠키를 이용한 사용자 인증방식 이외에도스프링 시큐리티 관련하여 강의가 계획되어 있는 지 여쭤보고 싶습니다!
- 미해결스프링 핵심 원리 - 기본편
객체 생성과 초기화의 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 이해한게 맞나 싶어서 질문드립니다. setter로 의존관계 주입을 완료까지 해야 스프링 빈 사용가능!!하지만 코드에서 보면 빈을 생성하는 과정에서 초기화(connect(); call("초기화 연결메세지");)를 진행하게됨 =>setter로 의존관계가 주입이 완료되지 않은시점에서 생성자에서 초기화를 진행해서 url이 없음 => 자동 의존관계가 주입된 시점을 알아야하 초기화를 진행 가능 그럼 언제 완료된지는 다음 강의의 콜백함수를 통해 알아보자
- 해결됨스프링 핵심 원리 - 기본편
springBoot가 실행이 안됩니다!..
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이렇게 뜨고 실행이 안됩니다.. 어떻게 해야 해결이 될까요?
- 미해결스프링 핵심 원리 - 기본편
강의중 주석을 자동완성처럼 코드에 맞춰져서 만드는 거 어떻게 하는건가요?
강의중 주석을 자동완성처럼 코드에 맞춰져서 만드는 거 어떻게 하는건가요?
- 미해결스프링 핵심 원리 - 기본편
@Configuration 과 싱글톤
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]new AnnotationConfigApplicationContext(DiscountService.class); 이렇게 @Configuration 이 붙지않은 클래스 를 넣으면 해당 클래스가 빈으로 등록되는 것 까지는 알겠습니다. 근데 싱글톤 강의에서도 봤다싶히 @Configuration 이 붙어있으면 싱글톤으로 유지해준다고 알고있습니다. Q.1 DiscountService.class 에 여러개의 @Bean이 작성되어있으면 싱글톤이 아닌건가요?? @Configuration이 없으니까?Q.2 싱글톤 유무는 @Configuration 로 결정짓는게 맞는지
- 미해결스프링 핵심 원리 - 기본편
TestBean 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); 이 부분에서 TestBean.class이 클래스에는 @Configuration, @Bean도 없음으로 설정정보로 쓰이는게 아니라 그냥 단순히 빈으로만 등록된다는건가요?
- 미해결스프링 핵심 원리 - 기본편
CoreApplication 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] overriding= true 까지 변경했음에도 불구하고 강의에서는 CoreApplication.java가 잘 실행되는데 저는 오류가 뜹니다. 찾아본 결과로는 @SpringBootApplication은 @Configuration, @ComponentScan, @EnableAutoConfiguration을 포함하는 메타 애노테이션입니다. 이렇게 포함되어 있기 때문에 @SpringBootApplication이 있는 클래스를 기준으로 스프링 부트 애플리케이션은 해당 패키지부터 모든 빈을 스캔하게 됩니다.따라서 AutoAppConfig에서의 excludeFilters 설정은 적용되지 않습니다. 스프링 부트가 이미 해당 패키지부터 모든 빈을 스캔하고 있기 때문에 AutoAppConfig에서 추가적인 스캔 설정을 하더라도 무시됩니다.이러한 이유로 AutoAppConfig에서의 excludeFilters 설정은 실행되지 않습니다.Q1. 이러한 이유로 안된다고 하는데 강의에서는 되는 이유는 버전차이인건가요?? Q2.AutoAppConfiguration, AppConfiguration,CoreApplication 이 모두 같은 패키지 안에 같은 계층에 존재하고 CoreApplication 얘가 이미 모든 빈을 스캔해서 exclude설정은 무시된다는 거로 이해했습니다만 맞나요?
- 해결됨스프링 핵심 원리 - 기본편
웹 관련 스코프
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]혹시 웹 관련 스코프는 HTTP 웹 기본 지식 강의를 듣고 와서 다시 들어도 무리가 없을까요?
- 미해결스프링 핵심 원리 - 기본편
옵션 처리
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]좀 이상한 질문일 수는 있는데 @Test void AutoWiredOption() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); } static class TestBean { @Autowired(required = false) public void setNoBean1(Member noBean1) { System.out.println("noBean1 = " + noBean1); } @Autowired public void setNoBean2(@Nullable Member noBean2) { System.out.println("noBean2 = " + noBean2); } @Autowired public void setNoBean1(Optional<Member> noBean3) { System.out.println("noBean3 = " + noBean3); } } 이 코드는 그냥 @Autowired에서 의존관계에 주입할 스프링 빈이 없을 때 동작을 실행하기 위한 그냥 단순한 코드인가요??ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);에서는 TestBean을 설정 정보로 넘기고는 있지만 @Bean이나 @Component같은 어노테이션이 포함이 되어 있어야 해당 클래스 명이나 메서드 명으로 스프링을 등록하는게 아닌가요...? @Autowired는 그냥 단순히 스프링 컨테이너에서 타입과 맞는 스프링 빈을 찾아서 등록해주는 건데 이해가 잘 되지 않아서요.
- 미해결스프링 핵심 원리 - 기본편
필드 주입
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다른 필드 주입 관련 게시글을 다 보고 왔는데 제가 이해한 것이 맞는지 모르겠습니다. 강의에서 나온 코드를 보면 nullpointexception이 발생한다고 했는데 생각하기엔 그렇구나 하는데 뭔가 완벽히 이해가 안갑니다. 그리고 외부에서 변경이 불가능 하다고 했는데 생성자 주입에서 변경이 불가능 한 것과는 다른 건가요?
- 미해결스프링 핵심 원리 - 기본편
구현체가 런타임에서 달라져야 하는 경우의 의존성 주입
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]요청의 타입에 따라 A요청은 ServiceA, B요청은 ServiceB등으로 런타임에서 구현체가 선택되어야 하는 경우에는 어떻게 해야할까요?예를 들어 주문 제휴사와 배달 대행사를 중계하는 서비스를 만들 때,배달 대행사의 배달 상태 변경 콜백을 주문 제휴사로 다시 콜백 API를 호출해야 하는데, 주문 제휴사 마다 특정한 동작이 필요해 구현체가 달라지는 경우 (ex. URL 차이, 필드값 차이 등) 어떻게 구현하는것이 옳은 방향일까요?