쌩로그
스프링 부트 문자열 자동 생성 및 테스트 본문
반응형
목록
- 포스팅 개요
- 본론
2-1. 환경 변수 지정
2-2. yml에 지정 - 요약
1. 포스팅 개요
해당 포스팅은 스프링부트에서 yml에 환경변수를 지정하고, 출력 테스트를 진행할 때 @Value 애너테이션의 동작에 대한 간단한 개요를 정리하려고 한다.
2. 본론
스프링 시큐리티를 통해 JWT를 적용하려고 하다가. yml에서 환경변수의 값을 지정하고, 출력 테스트를 하려고 할 때 null이 출력 됨을 확인했다.
![](https://velog.velcdn.com/images/tjdtn4484/post/aa2bca83-af85-42ac-8aee-5ffc2f162443/image.png)
2-1. 환경 변수 지정
먼저 값을 지정하려면, 윈도우 기준으로
시작 - '환경 변수'를 검색하면 시스템 시스템 환경 변수 편집이 나온다.
거기서 환경 변수 - 시스템 변수 - 새로 만들기 를 통해서 다음과 같이 변수 이름과 값을 넣으면 된다.
![](https://velog.velcdn.com/images/tjdtn4484/post/de859c5b-38ef-4831-a195-80fc14acee21/image.png)
리눅스로 편하게 지정하려면 다음 명령어를 사용하면 된다.
(리눅스가 없으면 Git bash를 활용하면 된다.)
openssl rand -hex 64
2-2. yml에 지정
yml에는 다음과 같이 지정한다.
(일단 임시다.)
// application.yml
jwt-variable:
secret-key: ${JWT_SECRET_KEY}
그리고 이제 테스트에서 출력을 해볼건데,,
public class SecurityTest {
@Value("${jwt-variable.secret-key}")
private String secretKey;
@Test
void printTest() {
System.out.println("secretKey = " + secretKey);
}
}
스프링 컨테이너에 빈을 올리는 과정을 생략하려고 이렇게 코드를 작성했다.
그런데 null이 출력되었다.
![](https://velog.velcdn.com/images/tjdtn4484/post/c7803034-9640-43d9-b80b-abe2f1145196/image.png)
왜 그런지 봤더니, @Value
애너테이션은 스프링의 Bean 주입이 마치고 난 후에 값의 주입이 일어난다고 한다.
그래서 그냥 클래스 레벨에 @SpringBootTest
애너테이션을 선언했다.
조금 느리지만, 다음과 같이 잘 나오는 것을 확인할 수 있다.
![](https://velog.velcdn.com/images/tjdtn4484/post/48a5f0d0-04f9-4ba9-8fcb-62fc67892b79/image.png)
3. 요약
- 환경 변수 지정하기
- @Value 값을 테스트하려면, 스프링 컨테이너에 Bean을 주입한 후에 주입되게 해야한다.
728x90
'TroubleShooting & 고민 > 기타' 카테고리의 다른 글
IntelliJ 2023.03버전부터 플러그인 Presentation Assistant 기능이 인텔리제이로 내장됨 (0) | 2023.12.13 |
---|---|
삽질기 (2) | 2023.11.21 |
브랜치 관리 (0) | 2023.05.31 |
깃허브 프로필 github Actions 403 문제 (feat. build 실패) (3) | 2023.05.09 |
인텔리제이 한글 깨짐 해결 (0) | 2023.05.05 |
Comments