강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

김형민님의 프로필 이미지
김형민

작성한 질문수

스프링 핵심 원리 - 기본편

다양한 의존관계 주입 방법

AutoAppConfigTest 관련 코드 질문입니다.

작성

·

199

0

1.

AutoAppConfigTest코드에서

Application ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);

로 스프링 컨테이너 생성하면, 스프링부트가 내부적으로 컨테이너 만들어주는 것 처럼 @Component찾아서 등록시켜주는 것이 맞을까요?

 

2.

맞다면 AutoAppConfig.class는 실행에 필요한 의미있는 설정정보가 아니긴한데 쓰는 이유는 그냥 AnnotationConfigApplicationContext()에 설정정보를 무조건 넣어줘야 문법이 맞기때문에 넣어주는 것 인가요?

 

강의를 듣다 제가 잘 이해하고 있는 것인지 궁금하여 질문드립니다!

퀴즈

필드 주입(Field Injection) 방식이 일반적으로 권장되지 않는 이유는 무엇일까요?

불변성을 보장하기 어려워서

의존성 변경이 쉬워서

순수 Java 코드로 테스트하기 어려워서

설정 코드 작성이 복잡해서

답변 1

1

안녕하세요. 김형민님, 공식 서포터즈 OMG입니다.

1.

Application ac = new AnnotationConfigApplicationContext(인자);

는 인자를 직접 스프링 빈으로 등록해줍니다.

@Component, @Controller 등의 어노테이션 없이도 스프링 컨테이너에 직접 빈을 등록해줄 수 있습니다.

 

2.

수동으로 등록하는 @Bean이 없기는 하지만 기존의 구조를 그대로 가져가기 위해 사용하신 것으로 보시면 될 것 같아요.

그렇게 함에도 정상작동하는 것까지 확인 시켜주신 것이구요.


감사합니다.

김형민님의 프로필 이미지
김형민
질문자

@Component, @Controller 등의 어노테이션 없이도 스프링 컨테이너에 직접 빈을 등록해줄 수 있습니다.

=> Application ac = new AnnotationConfigApplicationContext(인자); 실행하면 자동으로 @Component찾아서 등록시켜주긴하는데 @Component 없이 직접 빈을 설정정보에 구현하여 등록해줄 수 있다. 제가 잘 이해한 것이 맞을까요?

네 맞습니다. 스프링 컨테이너 그 자체이기 때문에 가능합니다.

아래 질문과 영한님의 답변을 보시면 더 잘 이해 되실꺼에요~

https://www.inflearn.com/questions/124234

김형민님의 프로필 이미지
김형민
질문자

감사합니다!

김형민님의 프로필 이미지
김형민

작성한 질문수

질문하기