@Value 어노테이션을 사용해서 KEY를 주입받고 싶을때!!!
989
호돌맨님의 강의를 정말 열심히 듣고 있는 학생입니다.
다름이 아니라 호돌맨님 강의와는 다른 방향으로 한번 KEY를 세팅해 볼 수는 없을까?? 라는 생각이 들었고 혹시나 저와 같은 문제를 마주친 분들 및 피드백을 받고 싶어서 글을 남깁니다.
@Value 어노테이션을 사용하여 application.yml(프로퍼티) 파일에서 값을 가져오는 방법을 적용해 보았습니다.
//application.yml
spring:
# secret properties
profiles:
include: secret//application-secret.yml
jwt:
secret: "ZxV0wmgRyU8ZGYBRITUGcaOi03osZK1bsy7qEUUjgBs="KEY 값을 application.yml 과 분리시키기 위해 별도로 .yml 파일을 생성하여 저장하였습니다.
//AuthController
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/auth")
public class AuthController {
private final AuthService authService;
@Value("${jwt.secret}")
private String KEY;
~~~~
}//AuthResolver
@Slf4j
@Component
@RequiredArgsConstructor
public class AuthResolver implements HandlerMethodArgumentResolver {
private final SessionJpaRepository sessionJpaRepository;
/**
* TODO:jwt.secret 이 null 인 문제...
* why???
*/
@Value("${jwt.secret}")
private String KEY;
~~~
}AuthController 와 AuthResolver 에 @Value 어노테이션을 사용하여 KEY 변수에 .yml 파일에 정의한 secret 값을 주입받게끔 코드를 작성하였습니다.
그러나 AuthController 에서는 정상적으로 .yml 파일에 정의해준 KEY 값이 주입이 되었지만 이상하게 AuthResolver 에서는 KEY 값이 null 이 나오더라구요...
@Component 어노테이션도 적용해서 Bean 객체로 만들어줬는데도 말이죠 ㅠㅠ
https://wildeveloperetrain.tistory.com/143
이 블로그에서 힌트를 얻을 수 있었습니다.
바로 WebMvcConfig 에서 AuthResolver 를 등록할때 new 연산자를 사용하여 새로운 인스턴스를 등록해주었기 때문이었습니다. new AuthResolver(sessionJpaRepository)
//WebMvcConfig
private final AuthResolver authResolver;
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
// resolvers.add(new AuthResolver(sessionJpaRepository));
resolvers.add(authResolver);
}그래서 new 연산자를 사용하는 것이 아닌 빈으로 등록된 인스턴스를 사용하여서 해결할 수 있었습니다.
다른분들에게 도움이 되셨으면 하는 마음에 글을 남깁니다. 혹시나 개선해야 될 점이 있거나 잘못된 부분이 있으면 댓글로 알려주시면 감사하겠습니다!!
답변 4
0
좋은 질문입니다! 저도 표준 방식 외에 키를 구성하는 다양한 방법을 모색해 왔습니다. application.yml 파일을 사용하는 것이 좋은 방법입니다. 특히 외부 서비스를 다룰 때 민감한 키를 이런 식으로 관리하는 것이 까다로울 수 있다는 것을 알게 되었습니다. Vault 같은 비밀 관리 솔루션이나 더 간단한 설정을 위한 환경 변수를 고려해 보셨나요? 다음과 같은 프레임워크를 고려해 보세요 Sprunki 더 간소화하는 데 도움이 될 수 있을지 모르겠지만, 한번 살펴보는 것도 좋을 것 같아요! 이 문제에 대한 경험을 더 자세히 알려주시면 감사하겠습니다.
0
Visit Skribbl IO, an online game, right away if you find blogging every day to be too boring. You won't be disappointed by this fun game.
수강 기간 연장 문의 드립니다
0
126
1
SAP 자격증 공부를 어떻게 해야할까요?
0
277
1
수강 기간 연장 문의 드립니다
0
268
1
안녕하세요! 실무와 관련되서 질문드립니다!
0
341
1
aws와 도커 학습 관련 질의
0
381
1
스프링 백엔드 개발 로드맵
0
456
1
Spring 공부 어떤 강의 순서로 듣는게 좋은가요?
0
645
1
부트스트랩 유료화
1
429
2
학습 방향에 고민이 있습니다.
0
502
1
스프링 선수학습이 필요한가요?
1
513
1
json-server 대체
0
332
1
강의 구매에 관한 질문입니다.
0
426
1





