Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不重新启动应用程序的情况下,在PCF中运行的spring boot应用程序中加载已更改的环境变量?_Java_Spring_Spring Boot_Pcf - Fatal编程技术网

Java 如何在不重新启动应用程序的情况下,在PCF中运行的spring boot应用程序中加载已更改的环境变量?

Java 如何在不重新启动应用程序的情况下,在PCF中运行的spring boot应用程序中加载已更改的环境变量?,java,spring,spring-boot,pcf,Java,Spring,Spring Boot,Pcf,我们有一个在PCF中运行的spring引导应用程序,它从应用程序中读取PCF环境变量(CF_INSTANCE_INDEX,CF_INSTANCE_ADDR,…)。基于这些变量,我们试图实现调度器的逻辑。运行此计划程序时,这些变量的值可能已更改。有没有办法在运行时刷新/重新加载具有env值的bean 我们在配置属性bean上使用了@RefreshScope注释 @Configuration @RefreshScope public class PcfEnvProperties{ @Value("

我们有一个在PCF中运行的spring引导应用程序,它从应用程序中读取PCF环境变量(CF_INSTANCE_INDEX,CF_INSTANCE_ADDR,…)。基于这些变量,我们试图实现调度器的逻辑。运行此计划程序时,这些变量的值可能已更改。有没有办法在运行时刷新/重新加载具有env值的bean

我们在配置属性bean上使用了
@RefreshScope
注释

@Configuration
@RefreshScope
public class PcfEnvProperties{

@Value("${CF_INSTANCE_INDEX}")
private int intanceIndex;

@Value("${CF_INSTANCE_ADDR}")
private String intanceAddr;

...
}
并使用

context.getBean(RefreshScope.class).refresh("PcfEnvProperties");
PcfEnvProperties pcfEnv = context.getBean(PcfEnvProperties.class);

但它并没有将最近更改的env变量加载到正在运行的应用程序中。关于如何实现这一点有什么想法吗

您可以使用Spring Cloud Config ServerSpring Actuator结合使用,在您的服务中公开一个端点,该端点将动态刷新应用程序的属性。您可以设置您的调度程序,以便在计时器上或根据需要命中此端点

以下是我发现的一个非常简单的教程:

您可能需要根据您的平台配置来进行设置,但我相信它应该满足您的需要。我们已经在PCF平台上部署了许多java web服务,使用这种actuator/config server方法,我们只需调用refresh端点,它就可以成功地从config server中提取(并在必要时覆盖)新的属性和值。您还可以从响应中提取更改的属性名称和值的列表

我不熟悉您提到的特定属性值,但只要它们通常是Spring的ApplicationContext(通常可以找到属性)的一部分,那么您就应该能够通过Spring的cloud config server和actuator库使用这种方法引入更改的值


希望这有帮助

您可以使用Spring Cloud Config ServerSpring Actuator结合使用,在您的服务中公开一个端点,该端点将动态刷新应用程序的属性。您可以设置您的调度程序,以便在计时器上或根据需要命中此端点

以下是我发现的一个非常简单的教程:

您可能需要根据您的平台配置来进行设置,但我相信它应该满足您的需要。我们已经在PCF平台上部署了许多java web服务,使用这种actuator/config server方法,我们只需调用refresh端点,它就可以成功地从config server中提取(并在必要时覆盖)新的属性和值。您还可以从响应中提取更改的属性名称和值的列表

我不熟悉您提到的特定属性值,但只要它们通常是Spring的ApplicationContext(通常可以找到属性)的一部分,那么您就应该能够通过Spring的cloud config server和actuator库使用这种方法引入更改的值

希望这有帮助