쌩로그

스프링 부트 문자열 자동 생성 및 테스트 본문

TroubleShooting & 고민/기타

스프링 부트 문자열 자동 생성 및 테스트

.쌩수. 2024. 1. 5. 01:17
반응형

목록

  1. 포스팅 개요
  2. 본론
      2-1. 환경 변수 지정
      2-2. yml에 지정
  3. 요약

1. 포스팅 개요

해당 포스팅은 스프링부트에서 yml에 환경변수를 지정하고, 출력 테스트를 진행할 때 @Value 애너테이션의 동작에 대한 간단한 개요를 정리하려고 한다.

2. 본론

스프링 시큐리티를 통해 JWT를 적용하려고 하다가. yml에서 환경변수의 값을 지정하고, 출력 테스트를 하려고 할 때 null이 출력 됨을 확인했다.

2-1. 환경 변수 지정

먼저 값을 지정하려면, 윈도우 기준으로
시작 - '환경 변수'를 검색하면 시스템 시스템 환경 변수 편집이 나온다.
거기서 환경 변수 - 시스템 변수 - 새로 만들기 를 통해서 다음과 같이 변수 이름과 값을 넣으면 된다.

리눅스로 편하게 지정하려면 다음 명령어를 사용하면 된다.
(리눅스가 없으면 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이 출력되었다.

왜 그런지 봤더니, @Value 애너테이션은 스프링의 Bean 주입이 마치고 난 후에 값의 주입이 일어난다고 한다.

그래서 그냥 클래스 레벨에 @SpringBootTest 애너테이션을 선언했다.

조금 느리지만, 다음과 같이 잘 나오는 것을 확인할 수 있다.

3. 요약

  1. 환경 변수 지정하기
  2. @Value 값을 테스트하려면, 스프링 컨테이너에 Bean을 주입한 후에 주입되게 해야한다.

문자열 생성 참고
@Value 참고

728x90
Comments