스프링 부트에서 애플리케이션 속성 런타임을 새로 고치거나 다시 로드하는 방법은 무엇입니까?

이 튜토리얼에서는 스프링 부트에서 애플리케이션 속성을 다시 로드하는 방법을 배울 것입니다.

스프링 부트에는 많은 옵션이 있습니다. 이제 여기에서 가장 쉬운 옵션을 설명하겠습니다.

Refresh beans with @ConfigurationProperties



Reloading 속성을 위해 spring cloud는 빈을 새로 고치는 데 사용할 수 있는 @RefreshScope 주석을 도입했습니다.

Spring Actuator는 상태, 메트릭에 대한 다양한 엔드포인트를 제공합니다. 그러나 스프링 클라우드는 모든 속성을 다시 로드하기 위해 추가 끝점/새로 고침을 추가합니다.

필수 maven/gradle 종속성


  • 스프링 액추에이터
  • 스프링 클라우드 스타터

  • <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    



    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter</artifactId>
    </dependency>
    


    그런 다음 응용 프로그램 속성 파일에 아래 속성을 추가하십시오.

    management.endpoints.web.exposure.include=refresh
    
    // Db Properties, Values to be store in a Map
    db.dbProps.awsEndPoint=localhost:8080/aws/
    db.dbProps.azureEndPoint=localhost:8080/azure/
    


    이제 속성을 구성하기 위한 클래스를 만들고 클래스에 @RefreshScope 주석을 추가합니다.

    @Component
    @ConfigurationProperties(prefix = "db")
    @RefreshScope
    public class DbProperties {
    
          // This is for storing application properties in a Map
        public Map<String, String> dbProps;
    
        public Map<String, String> getDbProps() {
            return dbProps;
        }
    
        public void setDbProps(Map<String, String> dbProps) {
            this.dbProps = dbProps;
        }
    
            // Get property value using key
        public String getDbPropData(String key) {
            return dbProps.get(key);
        }
    }
    


    위의 코드는 애플리케이션 속성 데이터를 새로 고칠 수 있는 범위를 만듭니다.

    이제 응용 프로그램 속성에서 데이터를 변경할 때. 아래 URL을 사용하여 POST REST 호출을 제공해야 합니다.

    http://localhost:8080/actuator/refresh
    


    지금부터 다음 접근에서 새로운 가치를 얻을 수 있습니다.

    제 블로그를 읽어주셔서 감사합니다. 🤩

    좋은 웹페이지 즐겨찾기