Jak używać wyniku SpEL jako klucza @Value
Nov 20 2020
W mojej aplikacji springboot chcę użyć @Value do odczytania niektórych konfiguracji, ale ta konfiguracja jest używana w wielu innych metodach, więc chcę zdefiniować klucz konfiguracji jako stałą.To jest kod:
@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");
}
}
W tej zmiennej kodu „SUPPORT_MANAGER_PLANE_INSTANCES” używanej przez @Value
i processConfigureChange
metody, jeśli trzeba zmodyfikować wartość tej zmiennej, potrzebuję zmodyfikować wszystkie odwołać się do tej zmiennej, więc chcę zdefiniować jedną stałą zmienną CONFIGURE_KEY
@Value
i processConfigureChange
metodę używaj tej zmiennej.
Odpowiedzi
1 TongChen Nov 20 2020 at 14:16
Dzięki pomocy @ 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);
}
}