SpEL 결과를 @Value 키로 사용하는 방법

Nov 20 2020

내 springboot 응용 프로그램에서 @Value를 사용하여 일부 구성을 읽고 싶지만이 구성은 다른 많은 방법에서 사용되므로 구성의 키를 상수로 정의하고 싶습니다.이 코드는 다음과 같습니다.

@Component
public class InstanceConfig {

    private static final String CONFIGURE_KEY = "SUPPORT_MANAGER_PLANE_INSTANCES";

    @Value("${SUPPORT_MANAGER_PLANE_INSTANCES}")
    private String supportManageInstances;
    
    @ApolloConfigChangeListener(value = ConfigConsts.NAMESPACE_APPLICATION)
    public void processConfigureChange(ConfigChangeEvent event) {
        log.info("configure changed do somthing");
        ConfigChange configChange = event.getChange("SUPPORT_MANAGER_PLANE_INSTANCES");
    }
}

에 의해 사용이 코드 변수 "SUPPORT_MANAGER_PLANE_INSTANCES"에서 @ValueprocessConfigureChange방법의 필요성이 변수의 값을 수정하면 내가 하나 개의 상수 변수를 정의 할 수 있도록 모두가이 변수를 참조 수정 필요 CONFIGURE_KEY @ValueprocessConfigureChange방법이 변수를 사용합니다.

답변

1 TongChen Nov 20 2020 at 14:16

@hirarqi의 도움보다

@Component
public class InstanceConfig {

    private static final String CONFIGURE_KEY = "SUPPORT_MANAGER_PLANE_INSTANCES";

    @Value("${" + CONFIGURE_KEY + "}")
    private String supportManageInstances;
    
    @ApolloConfigChangeListener(value = ConfigConsts.NAMESPACE_APPLICATION)
    public void processConfigureChange(ConfigChangeEvent event) {
        log.info("configure changed do somthing");
        ConfigChange configChange = event.getChange(CONFIGURE_KEY);
    }
}