inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

21강 생성자에서 의존성 주입과 관련하여 질문 있습니다.

해결된 질문

53

커디널스

작성한 질문수 34

0

생성자에서 필드에 의존성 주입하면

예를 들어 컨트롤러 생성자를 만들때 서비스 필드에 의존성 주입해주면 그때는 @Autowired가 자동으로 존재한다고 했는데 이 @Autowired 는 생성자의 파라미터를 전부 빈으로 등록시켜주는건가요?

만약 그렇다고 한다면 생성자의 파라미터가 객체가 아닌 경우는 어떻게 되는건가요?

혹시 객체 타입 파라미터만 빈으로 등록시켜주고 객체가 아닌 파라미터는 빈으로 등록시켜주지 않나요?

java spring aws mysql spring-boot jpa

답변 2

0

최태현

안녕하세요! 🙂 이렇게 학습을 하시며 다양한 경우를 생각하시는 것 매우 좋은 것 같아요!

우선 하나씩 답변 드려 보면...

예를 들어 컨트롤러 생성자를 만들때 서비스 필드에 의존성 주입해주면 그때는 @Autowired가 자동으로 존재한다고 했는데 이 @Autowired 는 생성자의 파라미터를 전부 빈으로 등록시켜주는건가요?

정확히 말씀드리면 @Autowired빈으로 등록된 파라미터를 주입 해주는 어노테이션입니다!

@Autowired 가 달려 있는 객체가 빈으로 등록되는 기능은 아니에요! 그 기능은 @Component 혹은 @Configuration + @Bean 조합을 사용해야 합니다 (21강을 보셨다면... 곧 등장할거에요!! 😎)

 

만약 그렇다고 한다면 생성자의 파라미터가 객체가 아닌 경우는 어떻게 되는건가요?
혹시 객체 타입 파라미터만 빈으로 등록시켜주고 객체가 아닌 파라미터는 빈으로 등록시켜주지 않나요?

생성자의 파라미터가 객체가 아니라면 해당 타입의 빈을 찾지 못할 것이고, 따라서 빈 주입이 실패하여 스프링 부트가 실행되지 않을거에요!

 

아래 AI 인턴이 얘기해준 스프링 프로퍼티와 관련해서는 @Value 어노테이션 혹은 @ConfigurationProperties 라는 어노테이션을 찾아보셔도 좋을 것 같습니다. 감사합니다 🙇

 

1

커디널스

감사합니다

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

커디널스님께서 질문하신 내용에 대해 설명드리겠습니다.

생성자에서 의존성 주입을 할 때, 스프링 프레임워크는 생성자의 파라미터로 주어진 객체를 스프링 빈으로 인식하여 자동으로 주입해주는 기능이 있습니다. 이때 @Autowired 어노테이션을 생략할 수 있게 된 것은 Spring 4.3부터의 특징입니다. 그래서 생성자 하나만 존재할 때는 별도로 @Autowired를 명시하지 않아도 됩니다.

이제 파라미터가 객체가 아닌 경우에 대해 설명드리겠습니다. 스프링 빈으로 등록되는 것은 기본적으로 스프링의 컨텍스트에서 관리되는 객체들입니다. 그러므로 생성자의 파라미터가 기본 데이터 타입(예: int, boolean, double 등)일 경우, 이는 일반적으로 스프링 빈으로 등록되지 않습니다. 대신에 이러한 기본 데이터 타입은 스프링에서 프로퍼티를 통해 값이 주입될 수 있습니다.

쉽게 말해, 객체 타입의 파라미터는 자동으로 스프링이 관리하는 빈으로 주입이 되지만, 기본 데이터 타입이나 문자열과 같은 경우는 명시적으로 프로퍼티 설정을 통해 값을 주입하는 방식을 활용하게 됩니다.

관련된 내용을 다룬 질문 및 답변이 있으니, 아래 링크를 참고해 보시기 바랍니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

패키지 구분에 대해 궁금한게 있습니다

0

18

2

리액트 관련 질문이 있습니다.

0

63

2

스프링부트 버전

0

72

2

7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.

0

58

2

33강. UserLoanHistory의 관계성에 대한 질문

1

55

2

Java JDK 버전 문의의 건

0

132

2

ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.

0

86

3

h2 console 접속했을 테이블 질문

1

64

1

ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨

0

74

2

15강. updateUser() 질문

0

55

2

깃허브 질

0

81

2

여기까지 다 끝냈다고 하셨는데

0

78

2

왜안될까요

0

69

2

MySQL 창이안ㄴ뜹니다

0

58

2

포스트맨

0

49

1

spring 개념적인 질문

0

71

2

인텔리제이 샘플코드 실행 안됨 오류

0

140

2

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

0

83

1

마이그레이션 오류입니다.

0

171

3

Whitelabel Error Page 오류가 났습니다.

0

163

2

안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ

1

91

3

궁금한게 있습니다.

0

58

2

DTO 관련

0

70

2

궁금한게 있습니다!

0

66

2