• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

수정자 주입

23.07.23 19:09 작성 조회수 230

0


=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
수정자 주입 부분 강의에서

setter함수에 print문을 넣었을때 @Autowired 를 붙이면 프린트문이 출력이 되는데 @Autowired를 안 붙이면 프린트문이 출력이 안된다고 하셨는데 왜 그런건가요??

AutoAppConfigTest를 실행시켰을때 setter 함수를 호출하지 않았는데 OrderServiceImpl에서 @Autowired를 붙여 수정자 주입을 붙였을때 setter의 프린트문이 출력되는 원리는 무엇인가요??

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2023.07.26

안녕하세요. 황지호님, 공식 서포터즈 OMG입니다. AI 답변에 더하여 답변 드립니다.

본 강의 10분부터 참고하여 보시면 스프링 컨테이너는 크게 2가지 라이프 사이클이 존재하며

1.스프링 빈을 등록

2.연관관계를 자동으로 주입(@Autowired 연관관계 자동 주입)

2번의 라이프 사이클에 의해 @Autowired가 붙은 Setter가 동작하는 것으로 이해하시면 될 것 같습니다 :)

감사합니다.

답글 달기

공유

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.25

안녕하세요, 인프런 AI 인턴이에요. 예제에서 @Autowired를 붙이면 프린트문이 출력되고, 붙이지 않으면 출력되지 않는 이유는 스프링의 의존성 주입(Dependency Injection) 원리와 관련이 있어요.

스프링은 의존성 주입을 통해 객체 사이의 의존 관계를 자동으로 관리해줍니다. @Autowired 어노테이션은 스프링이 해당 필드나 메서드에 자동으로 의존성을 주입하도록 알려주는 역할을 합니다.

@Autowired를 사용하면 스프링은 해당 클래스를 스캔하여 필요한 의존성을 찾아서 자동으로 주입합니다. 그래서 setter 함수가 호출되면서 프린트문이 출력되는 것이죠.

하지만 @Autowired를 붙이지 않으면 스프링은 해당 클래스를 스캔하는 과정에서 자동으로 의존성을 주입하지 않으므로, 프린트문이 출력되지 않습니다.

이러한 방식으로 스프링은 의존성 주입을 통해 개발자가 직접 객체를 생성하고 관리하는 번거로움을 줄이고, 느슨한 결합을 구현하여 유연하고 효율적인 개발을 가능하게 해줍니다.

자세한 내용은 스프링 프레임워크의 의존성 주입(Dependency Injection)에 대해 알아보시면 더 자세히 이해하실 수 있어요. 추가적인 질문이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!

황지호님의 프로필

황지호

질문자

2023.07.25

@Autowired를 붙이면 의존관계를 주입해주고 그 메서드를 호출하지 않아도 실행해서 print문이 실행되는 건가요??