Verwendung des SpEL-Ergebnisses als @ Value-Schlüssel

Nov 20 2020

In meiner Springboot-Anwendung möchte ich @Value verwenden, um einige Konfigurationen zu lesen, aber diese Konfiguration wird in vielen anderen Methoden verwendet, daher möchte ich den Schlüssel von configure als Konstante definieren. Dies ist der Code:

@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");
    }
}

In dieser Codevariablen "SUPPORT_MANAGER_PLANE_INSTANCES", die von @Valueund processConfigureChangeverwendet wird, muss der Wert dieser Variablen geändert werden. Wenn Sie den Wert dieser Variablen ändern müssen, verweisen Sie auf diese Variable. Daher möchte ich eine konstante Variable definieren CONFIGURE_KEY @Valueund die processConfigureChangeMethode diese Variable verwenden.

Antworten

1 TongChen Nov 20 2020 at 14:16

Dank @ hirarqis Hilfe

@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);
    }
}