JwtFilter 에 TokenProvider 선언 시 final 키워드 빠진 이유
76
1 asked
안녕하세요. 이번 강의를 들으며 스프링 시큐리티와 jwt 의 기본을 다시 익히면서 공부하였습니다.
강의를 들으며 코드를 보는 와중에 궁금증이 생겨 질문을 남기게 되었습니다.
JwtFilter에 TokenProvider 를 선언 시 final 키워드를 빼신 이유에 대해 여쭤보고 싶습니다.
다른 클래스에서는 TokenProvider를 선언 시 final 키워드를 붙이신 것으로 확인이 되었는데 필터에서만 제외하신 이유가 있을까요?
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다. cyctjdghks님 질문에 대해 답변 드리겠습니다.
JwtFilter에서 TokenProvider를 선언할 때 final 키워드를 제외한 이유에 대해 궁금해 하셨군요. 일반적으로 스프링에서 필드를 final로 선언하면 해당 필드는 생성자 주입을 통해 초기화될 필요가 있습니다. 이를 통해 불변성을 보장하고, 객체가 생성된 후에는 해당 의존성이 변경되지 않도록 합니다.
하지만, 특정한 상황에서는 필드를 반드시 final로 선언하지 않아도 괜찮을 수 있습니다. 다음과 같은 이유로 final을 생략할 수도 있습니다:
유연성: 테스트나 다른 환경에서의 설정 변경을 위해 의존성을 변경할 필요가 있을 때
final을 제거합니다.프레임워크 사용: 스프링에서는
@Autowired를 통해 의존성을 주입하는데, 필드를final로 선언하지 않아도 스프링 컨테이너가 관리해 주기 때문에 큰 문제없이 사용 가능합니다.특별한 이유: 예제 코드에서 특별히 불변성을 강조할 필요가 없거나, 객체의 생성과정에서 다양한 초기화 절차가 포함되어 있다면
final을 생략할 수도 있습니다.
하지만 final 키워드를 사용하는 것이 가능하면 의존성 변경을 방지하고 코드를 더욱 안전하게 만들 수 있기 때문에, 일관성을 유지하려면 가능하면 final 키워드를 사용하는 것이 좋습니다.
관련하여 추가적으로 더 알고 싶으신 부분이 있으신 경우, 아래와 같은 게시물을 참고하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
spring boot 3.x 버전 강의도 만들어주시면 안될까요?
0
67
1
3강 secret key 관련해서 질문있습니다
0
67
1
/api/authenticate 포스트맨 401 에러
0
223
1
Spring boot 3.x버전에서 data.sql 오류 발생할 경우
4
399
1
/api/hello 접근 시 401 나올 때 해결법
2
303
2
소스코드 전체 볼수 있을까요?
0
397
2
머이렇게 안되는게많노 ㅠ
1
757
2
스프링부트 3.x 버전 data.sql 삽입 오류 발생할 경우 해결 방법
6
1351
2
postman 결과가 다릅니다
0
355
2
body값이 비었습니다.
0
399
2
jjwt 버전을 올렸더니 jwt가 유효하지 않다고 합니다
0
3594
1
Refresh Token
0
506
1
유저 권한 설정
0
368
2
setAuthentication
0
496
1
postman에서 오류가 납니다..
0
1768
3
Spring boot 3.1.5 기준 학습 정리 파일 공유
1
1086
4
/api/hello에 접근이 안됩니다 ㅠㅠ
0
1082
2
mysql 설정로 실습시
0
873
2
유효한 JWT 토큰이 없습니다
0
667
2
8:45 spring security 3.1.5 설정 방법 (버전 안 맞춰서 안될때)
1
2279
2
2:00 에서 저처럼 버전 안 맞춰서 해서 헤매는 분들 이걸로 해보세요.
0
1275
3
JWT String argument cannot be null or empty.
0
2159
2
new User 생성자 오류 발생하는 분들...
6
501
2
requestMatchers 관련 에러 뜨시는 분들 참고하세요
6
2599
3

