본문 바로가기
spring boot

.setIssuedAt

by hyodev 2025. 3. 26.

시큐리티 구현하다가 .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