강의

멘토링

로드맵

Inflearn brand logo image

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

cyctjdghks님의 프로필 이미지
cyctjdghks

작성한 질문수

Spring Boot JWT Tutorial

JwtFilter 에 TokenProvider 선언 시 final 키워드 빠진 이유

작성

·

30

0

안녕하세요. 이번 강의를 들으며 스프링 시큐리티와 jwt 의 기본을 다시 익히면서 공부하였습니다.

강의를 들으며 코드를 보는 와중에 궁금증이 생겨 질문을 남기게 되었습니다.

 

JwtFilter에 TokenProvider 를 선언 시 final 키워드를 빼신 이유에 대해 여쭤보고 싶습니다.

 

다른 클래스에서는 TokenProvider를 선언 시 final 키워드를 붙이신 것으로 확인이 되었는데 필터에서만 제외하신 이유가 있을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. cyctjdghks님 질문에 대해 답변 드리겠습니다.

JwtFilter에서 TokenProvider를 선언할 때 final 키워드를 제외한 이유에 대해 궁금해 하셨군요. 일반적으로 스프링에서 필드를 final로 선언하면 해당 필드는 생성자 주입을 통해 초기화될 필요가 있습니다. 이를 통해 불변성을 보장하고, 객체가 생성된 후에는 해당 의존성이 변경되지 않도록 합니다.

하지만, 특정한 상황에서는 필드를 반드시 final로 선언하지 않아도 괜찮을 수 있습니다. 다음과 같은 이유로 final을 생략할 수도 있습니다:

  1. 유연성: 테스트나 다른 환경에서의 설정 변경을 위해 의존성을 변경할 필요가 있을 때 final을 제거합니다.

  2. 프레임워크 사용: 스프링에서는 @Autowired를 통해 의존성을 주입하는데, 필드를 final로 선언하지 않아도 스프링 컨테이너가 관리해 주기 때문에 큰 문제없이 사용 가능합니다.

  3. 특별한 이유: 예제 코드에서 특별히 불변성을 강조할 필요가 없거나, 객체의 생성과정에서 다양한 초기화 절차가 포함되어 있다면 final을 생략할 수도 있습니다.

하지만 final 키워드를 사용하는 것이 가능하면 의존성 변경을 방지하고 코드를 더욱 안전하게 만들 수 있기 때문에, 일관성을 유지하려면 가능하면 final 키워드를 사용하는 것이 좋습니다.

관련하여 추가적으로 더 알고 싶으신 부분이 있으신 경우, 아래와 같은 게시물을 참고하실 수 있습니다:

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

cyctjdghks님의 프로필 이미지
cyctjdghks

작성한 질문수

질문하기