시큐리티 구현하다가 .issuedAt 해서 오류가 난 경험이 있었음.

그래서 build.gradle 파일에서 io.jsonwebtoken:jjwt-api, io.jsonwebtoken:jjwt-impl, io.jsonwebtoken:jjwt-jackson 다 넣는데 오류가 나서 gradle 버전 문제인가 찾아봤는데 그것도 아니었음
에러 메시지를 보면 JwtBuilder 인터페이스에서 issuedAt 메서드를 찾을 수 없다라고 하고 이는 JJWT 라이브러리 버전에서 issuedAt 메서드가 더 이상 사용되지 않거나 다른 방식으로 호출되어야 한다는 것을 의미한다고 gpt 말함
// 기존 코드:
.issuedAt(new Date())
// 수정된 코드:
.setIssuedAt(new Date())
로 바꿨더니 됨
두 개의 차이를 찾아보니
2. 차이점
- setIssuedAt(Date)는 구버전 JJWT에서 사용되던 방식으로, setter 메서드입니다.
- issuedAt(Date)는 최신 버전에서 지원되는 방식으로, 메서드 체이닝 방식입니다. 최신 JJWT 버전에서는 JwtBuilder 객체를 반환하고, 이를 체이닝하여 메서드를 호출하는 방식을 채택하고 있습니다.
메서드 체이닝
**메서드 체이닝(Method Chaining)**은 객체의 메서드를 연속적으로 호출할 수 있는 프로그래밍 기법. 이 기법은 한 메서드 호출 뒤에 다른 메서드를 바로 호출할 수 있도록 하여, 코드의 가독성과 간결함을 높여줌.
public class Example {
private int value;
// 값을 설정하는 메서드
public Example setValue(int value) {
this.value = value;
return this; // 객체 자기 자신을 반환
}
// 값을 출력하는 메서드
public void printValue() {
System.out.println(this.value);
}
public static void main(String[] args) {
Example example = new Example();
// 메서드 체이닝 예시
example.setValue(10).printValue(); // setValue 후 printValue 바로 호출
}
}
어쨌든 구버전인 set을 썼더니 오류가 해결되었다!
'spring boot' 카테고리의 다른 글
| springboot_JPA_도메인 분석 설계 (0) | 2024.09.17 |
|---|---|
| springboot_JPA_프로젝트 환경설정 (0) | 2024.09.17 |
| 객체 지향 원리 (0) | 2024.07.28 |
| 프로젝트 생성 (0) | 2024.07.23 |
| 스프링 개념 (1) | 2024.07.20 |