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

blackhole124님의 프로필 이미지
blackhole124

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

상품 목록 - 타임리프

싱글톤 객체 사용 방법이 이해가 안됩니다.

작성

·

299

0

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

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

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

[질문 내용]
여기에 질문 내용을 남겨주세요.스크린샷 2024-01-10 오후 6.22.02.png위에서 private final ItemRepository itemRepository라고 작성한 부분은

ItemRepository의 객체를 하나만 사용하려는 목적. 즉, 싱글톤 객체를 사용하려는 목적으로 이해를 했습니다.

근데, 위에 코드는 ItemRepository의 참조값을 담을 수 있는 변수를 선언만 하고 실제 객체를 가져오는 부분(ItemRepository 객체)이 없는거 같은데

어떻게 ItemRepository 객체를 BasicItemController 클래스에서 사용할 수 있는건가요?

설명 부탁드립니다.

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. blackhole124님

이 부분을 이해하려면 스프링 핵심원리 기본편을 먼저 공부하셔야 합니다 🙂

감사합니다.

0

안녕하세요!

 

  1. final

자바에서 final 키워드는 싱글톤 객체를 선언하려는 목적이 아닌, 재할당이 불가능하도록 만드는 데에 있습니다.

 

image

이처럼 새로운 값으로 재할당 되지 못하도록 막는 역할을 합니다.

 

따라서 final 객체가 선언 될 때에는 반드시 값을 가져야 합니다. 즉, 초기화가 반드시 필요합니다. (재할당이 불가능하게, 불변하게 사용 할 값이므로 null 이 되어서는 안되겠죠)

 


  1. 스프링의 의존성 주입

스프링은 @Compnent 어노테이션 혹은 @Component 가 포함된 어노테이션 (@Controller, @Service...) 가 선언된 클래스의 생성을 직접 관리하고, 이 관리하는 객체들을 의존성 주입 이라는 방식을 통해서 사용할 수 있게 도와줍니다. 그리고 이 의존성 주입을 하는 방법 중에는 생성자 주입 이라는 방법이 있습니다.

 

질문자님께서 사용하신 방법이 바로 이 생성자 주입 방식입니다. 이 부분은 컨트롤러 위에서 선언해주신 롬복 어노테이션인 @RequiredArgsConstructer 를 통해서 이루어 지고 있습니다! (해당 어노테이션은 final 이 붙은 필드들이나 @NonNull 인 필드들의 생성자를 간편하게 선언 해 주는 역할을 합니다)

 

도움이 되었을까요? 더 자세한 내용은 링크를 한번 확인 해 보셔도 좋을 것 같습니다!

 

[자바 final 키워드]

[의존성 주입 설명 글]

 

감사합니다.

blackhole124님의 프로필 이미지
blackhole124

작성한 질문수

질문하기