jwtTokenProvider 라는 jwt토큰을 만드는 클래스에서
@Value(${}) 값이 null이 뜨는 참사가 발생했다
@Slf4j
public class JwtTokenProvider {
@Value("${jwt.secret.key}")
private String secretKey;
@Value("${jwt.token.validity-in-seconds}")
private Long validTime;
public String createAccessToken(Authentication authentication) {
log.info("크리에이트엑세스토큰시작");
log.info("키내놔 = {}", secretKey);
log.info("시간내노ㅓ = {}", validTime);
//...
이렇게 로그를 찍어보니
null이 뜨는 현상 발생..
알고보니
@Value 는 혼자 쓰는 게 아니라
나의 Value 값이 application.properties 에 쓰여있다고
직접 가르쳐줘야 한다고 한다(...)
@PropertySource("classpath:경로") 로
나는 내가 사용하는 application.properties 의 경로를 명시해줘야한다 ㅡ.ㅡ
@PropertySource("classpath:application.properties")
public class JwtTokenParser {
+
하지만 그래도 되지않아서
더 찾아보니...
@Value 값은
스프링 컨테이너가
해당 객체를 Bean 으로 등록할 때
@Value 값을 찾아서 넣어준다고 한다
그러니까, 빈으로 등록된 객체를 사용해야한다는 것!
하지만..난!!!
내가 JwtTokenProvider 를 사용하는 곳으로 가보니
이렇게 스프링이 만들어주는 빈 객체가 아닌,
new 를 이용해 내가 생성하고 있었던 것..
그래서 스프링이 @Value 값을 안 넣어주는 거를
계속 사용햇단 얘기다 ㅡ.ㅡ
빈으로 등록된 JwtTokenProvider 를 사용해보자!
일단 JwtTokenProvider 는 빈으로 등록된 싱글톤 객체를 사용할 거라서
JwtTokenProvider 를 사용하는
JwtAuthenticationFilter 에서
private final로 JwtTokenProvider를 선언해주고
생성자로 초기화해준다~
시큐리티 컨피그에서
스프링 빈으로 등록해준다!!
그 다음 JwtAuthenticationFilter 가 생성자로 JwtTokenProvider 를 받기 때문에
JwtAuthenticationFilter 를 생성할 때,
우리가 빈으로 등록한 JwtTokenProvider 를 넣어준다~~~
제대로 빈을 객체를 이용하게 만들고나니
값이 제대로 들어오는것을 볼 수 있다 ^0^/
하지만 머...당연하게도
또다른 예외가 터졋다 ㅎㅎ
해결하러 가봐야겟다 ㅎㅎ 슝