묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
@Autowired를 제거해도 의존 관계 주입이 가능한지
[질문 내용]질문 1.ComponentScan과 Autowired를 이용한 스프링 빈 등록 과정을 다음과 같이 이해해보았는데 틀린 내용이 있을까요? 특히 2,3,4 과정이 자세히 알고 싶습니다. @Component 애노테이션이 달린 클래스의 이름을 갖는 빈( 빈 껍데기 )을 등록빈으로 등록된 클래스의 생성자를 실행이 때 생성자의 매개변수가 적은 순서대로 실행 ( MemoryMemberRepository,RateDiscountPolicy -> MemberServiceImpl -> OrderServiceImpl )@Autowired 애노테이션이 달려있다면 생성자의 매개변수 클래스 타입을 확인한다. 해당 클래스 타입을 등록되어 있는 스프링 빈에서 가져온다.생성자를 실행하여 의존 관계 주입을 받은 인스턴스를 등록되어 있는 빈에 넣는다. 질문 2 .3~4 과정에서 @Autowired 애노테이션이 없다면 의존 관계 주입이 이루어지지 않을 것이라고 생각해서 MemberServiceImpl에 @Autowired를 제거해보았는데 MemoryMemberRepository 빈을 알아서 가져와서 의존관계 주입을 받게 되는데 어떻게 주입 받는 것인지 궁금합니다. Dependencies Diagram을 확인해보았더니 @Autowired를 통해서 주입 받는 orderServiceImplr과는 다르게 depends on 이라고 적혀있는데 MemoryMemberRepository가 @ComponentScan으로 빈으로 등록되어서 스프링이 자동으로 알맞은 의존 관계 주입을 해준 것인가요?
-
미해결스프링 핵심 원리 - 기본편
빈으로 등록하지 않았는데 @Autowired를 통해 의존성 주입할 때 충돌이 납니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 @Autowired를 사용해 의존성 주입을 하다 충돌이 나서 질문드립니다.MemberRepository인터페이스 -> MemoryMemberRepository 구현체후자에만 @Component를 붙인 상황입니다.그런데Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [/Users/minsung/Desktop/study/core/out/production/classes/hello/core/member/MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository이런식으로 memberRepository 또한 빈으로 등록되어 있었습니다.@Autowired가 클래스 타입으로 조회한다는 것은 알고 있지만 빈으로 등록되어있는 애들 중에서 조회하는 것 아닌가요...?왜 memberRepository를 빈으로 등록하지 않았는데 빈으로 등록되어있는지@Autowired는 왜 빈으로 등록되지도 않은 memberRepository를 찾을 수 있었는지@Autowired 보다는 @RequiredArgsConstructor 사용을 권장하던데 이제 @Autowired는 잘 쓰이지 않는 것인지궁금합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@Autowired 관련 질문
강의(자바코드로 직접 스프링 빈 등록하기)에서 마지막 부분에 @Autowired를 통한 DI는 스프링이 관리하는 객체에서만 동작한다는 설명 해주실때 @Autowired가 먹질않는다는 뜻을 잘모르겠습니다 그래서 @Autowired 를 사용하지 않으면 어떻게 되는건지도 궁금합니다..(@Autowired 의 의미? 뜻 을 잘 모르겠습니다) 생성자 주입 로직만 있으면 의존관계 설정 (DI) 완료되는게 아닌건가요?? @Autowired 를 사용하지 않으면 memberService 클래스 내에서 repository를 사용하려면 예전에 하던 new 로 생성해야 하는거랑 똑같게 되는 건가요??
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
@Autowired annotation 관련
@Autowired annotation을 바로 붙이는 방식도 현재는 추천되지 않는 방식으로 아는데요 (테스팅에서 mocking하기 어려움.) Intellij에서도 이런 방식으로 사용하면 화면에서 보이듯이 warning 메세지가 나오고요. 일반적으로 constructor기반으로 많이들 사용하는 걸로 아는데, "@Autowired"를 굳이 사용하시는 이유가 초심자들을 위해 설명을 단순화하기 위함인가요? 아니면 본인 습관이세요?
-
미해결스프링 핵심 원리 - 기본편
@Resource 관해서 질문드립니다.
안녕하세요. 강사님, 항상강의 잘 보고 있습니다. 제가 실무에서 si 사업을 하다보니 레거시 프로젝트를 많이 접합니다. 실무에서 필드 주입을 많이사용하더라구요. @Resource를 주로 사용하더라구요. service 클래스나, repository를 주입할때 사용합니다. 자바에서 지원하는걸로 알고 있는데요. 저만 다르게 강의에서 배운데로 하자니 혼자 개발 하는게 아니라 같이 사용중입니다;; 강의에서는 언급이 없으신건 스프링에서 지원하느게 아니라서 그런건가요? @Autowired의 단점이 @Resource에서도 해당하는거겠죠? 사용을 하지 말아야할거 같은데.. 이번 강의 잘 보고 설득해야겠네요..
-
해결됨스프링 핵심 원리 - 기본편
@SpringBootTest에서 어떻게 @Autowired가 작동하는지 궁금합니다
안녕하세요~ 유익한 강의 잘 듣고 있습니다! 이해가 안가는 부분이 있어 질문드립니다. 24분 40초 쯤에 보면 @SpringBootTest 클래스에서 @Autowired를 사용하고 있습니다. 이게 어떻게 동작하는지 모르겠습니다. 1. 일전에, ComponetScan의 범위는 AutoAppConfig가 포함된 패키지 이하라고 하셨습니다. 이에 따르면 test, resources는 컴포넌트 스캔의 대상이 아닙니다 2. 의존관계 주입 대상은 컨테이너에 빈이라고 하셨습니다. 그렇다면 @SpringBootTest 클래스(CoreApplicationTest)는 빈 등록 대상이 아니므로 Autowired가 불가능한 것 아닌가요?? 어떤 과정을 거쳐 @SpringBootTest 클래스에 빈이 주입되는지 궁금합니다!