강의

멘토링

로드맵

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

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

작성한 질문수

스프링 핵심 원리 - 기본편

다양한 의존관계 주입 방법

AutoAppConfigTest 관련 코드 질문입니다.

작성

·

199

0

1.

AutoAppConfigTest코드에서

Application ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);

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

 

2.

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

 

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

퀴즈

What are the main reasons why Field Injection is generally not recommended?

Because it is difficult to guarantee immutability

Because changing dependencies is easy

Because it's difficult to test with pure Java code

Because writing configuration code is complex

답변 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

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

감사합니다!

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

작성한 질문수

질문하기