• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

키워드 final에 대한 질문 있습니다.

23.08.19 19:01 작성 조회수 364

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

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

[질문 내용]
스크린샷 2023-08-19 오후 6.49.08.pngprivate final MemberRepositoryV1 memberRepository;

위 코드에서

MemberRepositoryV1의 객체 memberRepository에

final이라는 키워드를 사용하는 이유는 아래와 같다라고 이해하면 되나요?

"final 키워드를 붙인 객체 memberRepository를 생성함으로써 MemberServiceV1의 클래스 내에선

MemberRepositoryV1의 객체는 memberRepository가 유일하고, MemberRepositoryV1의 객체는 객체를 더 이상 생성할 수 없다."

이렇게 이해했는데 옳게 이해한 것인지 모르겠습니다.

설명 부탁드립니다.

항상 친절한 답변 감사합니다.

 

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2023.08.20

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

질문으로 남겨주신 내용인 자바의 final 키워드의 특징을 기반으로

댓글의 wogud1514님의 말씀처럼 Lombok의 @RequiredArgsConstructor는 final 키워드가 선언된 필드에 스프링빈을 주입 받을 수 있도록하여 accountTransfer()를 보시면 아시겠지만,

memberRepository객체를 주입받아 memberRepositoryfindById(), memberRepository.update() 등 NullPointerException이 발생하지 않고 사용할 수 있기 위함입니다 ^^

 

감사합니다.

안녕하세요

답변 달아주셔 감사합니다.

그러면 제가 글에 작성한 "final 키워드를 붙인 객체 memberRepository를 생성함으로써 MemberServiceV1의 클래스 내에선

MemberRepositoryV1의 객체는 memberRepository가 유일하고, MemberRepositoryV1의 객체는 객체를 더 이상 생성할 수 없다."이라는 설명이 "스프링빈을 주입 받을 수 있도록 하기 위함"이라는 부분은 이해했습니다.

혹시, 그러면 "스프링빈을 주입하는 것" 라는 것의 의미는 "스프링에서 자동으로 싱글톤 패턴으로 생성하고 관리를 한다"로 이해하면 옳게 이해한 것이 맞나요?

항상 친절한 답변 감사합니다.

OMG님의 프로필

OMG

2023.08.22

"스프링빈을 주입하는 것" "스프링에서 자동으로 싱글톤 패턴으로 생성하고 관리를 한다"

각각을 동일하게 보기 보다는 두 개념은 서로다른 것으로 스프링 프레임워크의 특징이라고 보시면 될 것 같습니다:)

 

 

0

wogud1514님의 프로필

wogud1514

2023.08.19

lombok의 @RequiredArgsConstructor과 조합하여 생성자 주입으로 memberRepository 빈을 주입받기 위해서 아닐가용?

안녕하세요 저번 질문도 그렇고

답변 달아주셔 감사합니다 !

이해하는데 큰 도움이 됐습니다 좋은하루 보내세요