programing

스프링 부트를 사용하는 동안 동적 속성을 구성하는 방법은 무엇입니까?

lastmoon 2023. 7. 1. 09:20
반응형

스프링 부트를 사용하는 동안 동적 속성을 구성하는 방법은 무엇입니까?

저는 과제에 스프링 부츠를 사용할 계획입니다.데이터베이스에 연결된 일반적인 서버 응용프로그램입니다.스프링 구성을 사용하여 속성(예: db 연결 세부 정보)을 외부화할 수 있습니다.그러나 실행 시 업데이트해야 하는 다른 동적 속성(예: 플립퍼/기능 플래그)도 있습니다.애플리케이션의 특정 기능을 동적으로 제어해야 합니다. 예를 들어 app.cool-feature.enable=true와 같은 속성을 상상하면 잠시 후 app.cool-feature.enable=false에서 동일한 기능이 꺼집니다.

런타임에 이러한 동적 행동을 섭취하는 것과 관련하여 가장 좋은 방법이 무엇인지 제안해 주시겠습니까?다음과 같은 방법으로 변화를 일으킬 수 있습니다.

  • 위 속성이 변경된 JMS 메시지를 서버 인스턴스로 보냅니다.
  • 서버 인스턴스에서 노출된 API 끝점을 호출합니다(예: POST http://myapp/admin/config/update {"config": {"app.cool-feature.enable": true }).

이를 구현하는 자체 사용자 지정 코드를 작성할 수 있다는 것은 알고 있지만(세 번째일 것입니다), 동적 속성 구성에 대한 표준 방법/일반 관행이 이미 있는지 궁금합니다.또한 Apache ZooKeeper, coreos 등과 같은 다른 솔루션과 협력하여 Netflix 큐레이터 등과 밀접하게 통합할 수 있으면 좋겠습니다.

생각은?

모든 구성을 중앙에서 찾을 수 있을 뿐만 아니라 동적으로 새로 고칠 수 있으며, 다음 순간부터 참조 애플리케이션에서 이 구성을 선택할 수 있는 "Spring Cloud Config"의 좋은 사용 사례입니다.이 표준 스프링 링크를 참조하십시오.

Spring boot를 사용하는 경우 확인해 보십시오.@ConfigurationProperties숙박업소에 액세스하려면 빈을 제공해야 합니다.따라서 속성의 원래 값은 콩의 정규 속성이므로 실행 중에 변경될 수 있습니다.

예를 들어 다음과 같은 경우:

@Component
@ConfigurationProperties
public class JmsProperties {

    private String url = "vm://localhost"; // (let's suppose you use ActiveMQ)
    
    public String getUrl() {
      // Do work here
    }
    public void setUrl(String value) {
      // Do work here
    }
}

그런 다음 이 콩을 JMS 메시지 청취기에 주입합니다.

물론 JMS와 Spring boot를 사용하고 자동 구성을 사용하면 Properties 클래스가 이미 있습니다.

Togglz: www.togglz.org 를 보는 것이 좋을 것입니다.

홈페이지에서:

Togglz는 Java용 Feature Toggles 패턴의 구현입니다.기능 전환은 지속적인 배포 및 제공의 맥락에서 매우 일반적인 민첩한 개발 방식입니다.기본 아이디어는 작업 중인 각 새 기능과 토글을 연결하는 것입니다.이렇게 하면 개별 사용자에 대해서도 응용프로그램 런타임에 이러한 기능을 활성화하거나 비활성화할 수 있습니다.

Togglz는 스프링 프레임워크에 바인딩되지 않고 지지합니다.

언급URL : https://stackoverflow.com/questions/28756014/how-to-configure-dynamic-properties-while-using-spring-boot

반응형