Cannot resolve configuration property 'spring. jwt. secret'

송민지·2024년 9월 18일

문제 발생 시점 환경

spring을 공부하면서 회원가입, 로그인, jwt token발급은 해본적이 없어서 개인적으로 작업중이였습니다.

환경변수는 .env.local파일에 작성된 내용을 application.yml파일에 불러왔고 다음과 같이 작성했습니다.

server:
  port: ${PORT:8000}

spring:
  config:
    import: optional:file:.env.local[.properties]

    # Using MySQL
  datasource:
    url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB}
    username: ${MYSQL_USER}
    password: ${MYSQL_PASSWORD}
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    database: mysql
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect
        show_sql: true
        format_sql: true
        use_sql_comments: true
 jwt:
   secret:
     key: ${JWT_SECRET_KEY}

문제는 Application을 실행시키면서 나타났습니다.

발생한 오류

어플리케이션을 실행하면서 나타난 오류는 다음과 같았습니다.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jwtUtil': Injection of autowired dependencies failed

jwtUtill에서 bean을 생성하지 못해 나타나는 에러였습니다.

에러의 원인

원인은

@Value("${jwt.secret.key}") // 이곳이 원인
    private String secretKey;

application.yml파일에서 jwt.secret.key를 불러오지 못해 나타나는 에러였습니다.

해결과정

application.yml을 살펴보던중에 key부분 글자에 음영이 생성된걸 확인했습니다.

Cannot resolve configuration property 'spring. jwt. secret. key' 

라는 오류였으며 구글링 결과 원인을 파악할 수 있었습니다.

모든 문제의 원인은 application.yml파일에서 jwt부분을 spring의 하단에 두어 발생한 문제였습니다.
jwt와 spring은 같은 line에 위치에 작성하니 정작적으로 작동하였습니다.

server:
  port: ${PORT:8000}

spring:
  config:
    import: optional:file:.env.local[.properties]

    # Using MySQL
  datasource:
    url: jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB}
    username: ${MYSQL_USER}
    password: ${MYSQL_PASSWORD}
    driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    database: mysql
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect
        show_sql: true
        format_sql: true
        use_sql_comments: true
jwt:
  secret:
    key: ${JWT_SECRET_KEY}

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jwt.secret' in value "${jwt.secret}" 오류 해결

profile
항상 밝게

0개의 댓글