인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

도도한 개님의 프로필 이미지
도도한 개

작성한 질문수

Java/Spring 주니어 개발자를 위한 오답노트

서비스란 무엇인가?

의존하는 객체 final 선언 질문드립니다.

작성

·

41

0

안녕하세요,

'서비스란 무엇인가' 강의를 보고 질문드립니다.

 

서비스는 불변으로 만들기 위해 서비스에서 쓰고 있는 리포지토리를 final로 선언하라고 강의를 통해 배웠습니다.

 

컨트롤러에서 쓰는 서비스나 리포지토리에서 쓰는 것들도 final로 선언해도 될까요? 불변이면 생성된 객체가 변경할 수 없는 것 이라는 정도만 이해하고 있는데 다른 레이어도 final로 선언하면 더 안정적인 애플리케이션이 되는 거 아닌가? 라는 생각이 들어 질문드립니다!

 

감사합니다.

답변 1

0

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

도도한 개님,

의존하는 객체를 final로 선언하는 것은 해당 객체가 생성된 이후에는 참조가 변경되지 않도록 하여 불변성을 보장하려는 목적이 있습니다. 서비스 객체에서 리포지토리를 final로 선언하는 것처럼 컨트롤러에서 사용하는 서비스나 리포지토리에서도 final로 선언하는 것은 좋은 방법입니다. 이는 객체의 상태가 예기치 않게 변경되지 않도록 막으며, 코드의 안정성을 높일 수 있습니다.

Spring Framework에서 final 키워드를 사용한 생성자 주입 방식은 의존성 주입 시 가장 권장되는 방법 중 하나입니다. 이는 컴파일 시점에 주입된 객체가 변경되지 않음을 보장할 수 있으며, 코드의 유지보수와 안정성을 높이는 데 도움이 됩니다.

따라서, 다른 레이어에서도 마찬가지로 의존하는 객체들을 final로 선언하면 더욱 안정적인 애플리케이션 설계에 도움이 됩니다.

도움이 되셨길 바랍니다. 추가적인 질문이 있으시면 언제든지 문의해주세요!

Image URL: 서비스와 기능 설계의 예

Origin URL: Spring Boot Reference Documentation

도도한 개님의 프로필 이미지
도도한 개

작성한 질문수

질문하기