반응형

Spring에서 환경 변수 설정하는 방법

Spring 애플리케이션에서 환경 변수를 설정하는 방법에는 여러 가지가 있습니다. 이번 글에서는 IntelliJ에서 직접 설정하는 방법, .env 파일을 사용하는 방법, 그리고 HashiCorp Vault 서버를 활용하는 방법을 각각 예제와 함께 설명하겠습니다.


1. IntelliJ에서 환경 변수 직접 설정하기

개발 도구(IntelliJ)에서 환경 변수를 설정하면, 실행 환경에 따라 애플리케이션에서 사용할 변수를 변경할 수 있습니다.

설정 방법

  1. IntelliJ에서 Run/Debug Configurations로 이동합니다.
  2. 해당 애플리케이션 실행 설정을 선택합니다.
  3. Environment Variables 섹션을 찾아 클릭합니다.
  4. 변수 이름과 값을 입력한 후 저장합니다.

예제

아래와 같이 환경 변수를 설정하면, Spring Boot 애플리케이션에서 해당 값을 사용할 수 있습니다.

 
# IntelliJ에서 설정한 환경 변수
db.username=myuser
db.password=mypassword

이렇게 설정한 환경 변수는 @Value 또는 System.getenv()를 통해 접근할 수 있습니다.

@Value("${db.username}")
private String dbUsername;

@Value("${db.password}")
private String dbPassword;

public void printDatabaseConfig() {
    System.out.println("DB Username: " + dbUsername);
    System.out.println("DB Password: " + dbPassword);
}

2. .env 파일을 사용한 환경 변수 설정

.env 파일은 개발 환경별로 쉽게 설정을 관리할 수 있는 방법 중 하나입니다. Spring Boot에서 .env 파일을 활용하려면 dotenv 라이브러리를 사용해야 합니다.

설정 방법

  1. 프로젝트 루트 디렉토리에 .env 파일을 생성합니다.
  2. 환경 변수를 .env 파일에 정의합니다.

예제

.env 파일:

 
DB_USERNAME=myuser
DB_PASSWORD=mypassword

Spring Boot에서 .env 파일 로드하기

  1. io.github.cdimascio:java-dotenv 라이브러리를 추가합니다.
<dependency>
    <groupId>io.github.cdimascio</groupId>
    <artifactId>java-dotenv</artifactId>
    <version>5.2.2</version>
</dependency>
  1. .env 파일의 값을 로드하여 사용합니다.
import io.github.cdimascio.dotenv.Dotenv;

public class EnvConfig {
    private static final Dotenv dotenv = Dotenv.load();

    public static String getEnv(String key) {
	    return dotenv.get(key);
    }

    public static void main(String[] args) {
    	System.out.println("DB Username: " + getEnv("DB_USERNAME"));
    	System.out.println("DB Password: " + getEnv("DB_PASSWORD"));
    }
}

3. HashiCorp Vault를 사용한 환경 변수 설정

Vault는 보안성이 중요한 환경에서 민감한 정보를 안전하게 저장하고 관리할 수 있는 강력한 솔루션입니다.

설정 방법

  1. Vault 서버 설치 및 실행
 
vault server -dev
  1. 환경 변수 저장
 
vault kv put secret/db username=myuser password=mypassword
  1. Spring Boot에서 Vault 설정 Spring Boot에서 Vault를 사용하려면 spring-cloud-vault 의존성을 추가해야 합니다.
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-vault-config</artifactId>
</dependency>
  1. application.yml 설정
spring:
    cloud:
        vault:
            host: localhost
            port: 8200
            scheme: http
            authentication: token
            token: my-root-token
            kv:
	            enabled: true
  1. 환경 변수 가져오기
@Value("${username}")
private String dbUsername;

@Value("${password}")
private String dbPassword;

public void printVaultConfig() {
    System.out.println("Vault DB Username: " + dbUsername);
    System.out.println("Vault DB Password: " + dbPassword);
}

마무리

Spring Boot에서 환경 변수를 설정하는 방법에는 다양한 방식이 있습니다.

  • IntelliJ에서 직접 설정하면 빠르게 테스트할 수 있습니다.
  • .env 파일을 사용하면 설정을 별도로 관리할 수 있어 편리합니다.
  • Vault 서버를 활용하면 보안성이 강화됩니다.

필요에 따라 적절한 방법을 선택하여 효율적으로 환경 변수를 관리하세요!

 

반응형

'개발 부트캠프 > 백엔드' 카테고리의 다른 글

[Trace] 핀포인트(Pinpoint)  (0) 2025.02.21
[Kafka] Kafka 실행 실습  (0) 2025.02.17
[Spring] @Component와 @Bean의 차이점  (0) 2025.02.15
[Spring] Stream  (0) 2025.02.15
[Spring] DTO(Data Transfer Object)  (0) 2025.02.15

+ Recent posts