"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Spring Boot 애플리케이션에서 Spring 프로파일을 사용하는 방법

Spring Boot 애플리케이션에서 Spring 프로파일을 사용하는 방법

2024-08-06에 게시됨
검색:105

How to Use Spring Profiles in Your Spring Boot Application

Spring 프로필은 애플리케이션 구성의 일부를 분리하고 특정 환경에서만 사용할 수 있도록 하는 강력한 방법을 제공합니다. 이 기능은 코드를 변경하지 않고 개발, 테스트 및 프로덕션 환경의 다양한 구성을 처리하는 데 특히 유용합니다.

스프링 프로필이란 무엇입니까?

Spring Profile을 사용하면 활성 프로필에 따라 빈을 조건부로 등록할 수 있습니다. 이는 동일한 유형의 여러 Bean을 정의하고 주어진 환경에서 어떤 Bean을 활성화해야 하는지 지정할 수 있음을 의미합니다.

스프링 프로필 설정

1. 구성 파일 생성

Spring Boot는 구성을 위해 application-{profile}.properties 또는 application-{profile}.yml 파일 세트를 사용합니다. 이러한 파일에는 프로필별 구성이 포함되어 있으며 활성 프로필을 기반으로 로드됩니다.

기본 구성(application.yml)

spring:
  application:
    name: MySpringApp

server:
  port: 8080  # Default port

개발 구성(application-dev.yml)

spring:
  datasource:
    url: jdbc:h2:mem:devdb
    username: sa
    password: ""
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

server:
  port: 8081  # Development port

프로덕션 구성(application-prod.yml)

spring:
  datasource:
    url: jdbc:mysql://prod-db-server:3306/proddb
    username: prod_user
    password: prod_password
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: validate
    show-sql: false

server:
  port: 8082  # Production port

스프링 프로필 활성화

2. 명령줄을 통해 프로필 활성화

Spring Boot 애플리케이션을 실행할 때 --spring.profiles.active 매개변수를 사용하여 프로필을 활성화할 수 있습니다.

java -jar my-spring-app.jar --spring.profiles.active=dev

3. 애플리케이션 속성을 통해 프로필 활성화

또는 application.yml 파일에서 활성 프로필을 지정할 수 있습니다.

spring:
  profiles:
    active: dev  # or prod

4. 환경 변수를 통해 프로필 활성화

환경 변수를 사용하여 활성 프로필을 설정할 수도 있습니다.

export SPRING_PROFILES_ACTIVE=dev

코드에서 프로필 사용

Spring은 활성 프로필을 기반으로 Bean을 조건부로 등록하기 위해 @Profile 주석을 제공합니다. 예는 다음과 같습니다.

구성 클래스 예

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class AppConfig {

    @Bean
    @Profile("dev")
    public DataSource devDataSource() {
        return new HikariDataSource();  // Development-specific DataSource
    }

    @Bean
    @Profile("prod")
    public DataSource prodDataSource() {
        return new HikariDataSource();  // Production-specific DataSource
    }
}

이 예에서 devDataSource 빈은 개발자 프로필이 활성화된 경우에만 생성되고 prodDataSource 빈은 prod 프로필이 활성화된 경우 생성됩니다.

프로필별 Bean 테스트

테스트를 작성할 때 @ActiveProfiles 주석을 사용하여 활성화해야 하는 프로필을 지정할 수 있습니다.

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;

@SpringBootTest
@ActiveProfiles("dev")
public class DevProfileTests {

    @Autowired
    private DataSource dataSource;

    @Test
    public void testDataSource() {
        // Test code using the development DataSource
    }
}

프로필별 속성

때때로 활성 프로필을 기반으로 다양한 속성 파일을 로드해야 할 수도 있습니다. 이를 달성하기 위해 @PropertySource 주석을 사용할 수 있습니다:

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:application-${spring.profiles.active}.properties")
public class PropertyConfig {
}

결론

Spring Profiles는 다양한 환경에 대한 다양한 구성을 관리하는 강력하고 유연한 방법입니다. 프로필을 기반으로 구성 속성과 Bean을 분리하면 개발, 테스트, 프로덕션 등 각 환경에서 애플리케이션이 올바르게 작동하는지 확인할 수 있습니다. 이 문서에 설명된 기술을 사용하면 Spring Boot 애플리케이션에서 프로필을 쉽게 설정하고 관리할 수 있습니다.

릴리스 선언문 이 기사는 https://dev.to/isaactony/how-to-use-spring-profiles-in-your-spring-boot-application-o18?1에서 복제됩니다. 침해가 있는 경우, Study_golang@163으로 문의하시기 바랍니다. .com에서 삭제하세요
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3