当前位置: 首页 > 知识库问答 >
问题:

spring cloud starter配置POST/env不工作

柳项明
2023-03-14

我有一个小Spring启动Web应用程序(可执行罐),它在application.properties文件中有一些自定义属性。我的目标是能够在运行时动态更改这些属性,而不必运行构建/部署或重新启动java进程。sping-Cloud-starter-config项目似乎非常适合于此(尽管我没有使用配置服务器),但我遇到了以下问题:

在我的pom里。xml I包括对spring boot starter actuator和spring cloud starter config的依赖关系。应用程序。属性在属性下面配置

management.port=8081
management.context-path=/management
management.security.enabled=false
foo=bar

我可以使用

curl http://localhost:8081/management/env/foo
{"foo":"bar"}

下面的更新似乎也成功了

curl -X POST -d foo=foo http://localhost:8081/management/env
{"foo":"foo"}

当我查询整个env时,我会在manager部分看到更改后的值,在applicationConfig中看到原始值

curl http://localhost:8081/management/env
{
  ...
  "manager": {
    "foo": "foo"
  },
  ...
  "configServerClient": {
    "spring.cloud.config.enabled": "false"
  },
  ...
  "applicationConfig: [classpath:/application.properties]": {
  ...
  "foo": "bar",
  ...
  }
}  

现在当我再次查询变量时,我仍然得到旧的值

curl http://localhost:8081/management/env/foo
{"foo":"bar"}

这与我在一些网络博客上读到的相反。在我的理解中,变化的值应该显示出来。我做错了什么?有没有更好的方法在不重启服务器的情况下动态更改application.properties中的值?

非常感谢你的帮助。

共有3个答案

殷宾白
2023-03-14

如果您使用的是大于2.2.4的spring启动版本,那么必须使用下面的属性手动启用POST API调用。

经营终点。环境。邮递启用=真

西门安民
2023-03-14

对我来说,它只适用于

curl -H "Content-Type: application/json" -X POST -d '{"name":"foo", "value":"bar"}' http://localhost:8081/management/env/

否则我会

"Missing parameters: value,name"
苏彭薄
2023-03-14

将更改发布到环境后,需要运行刷新

curl -X POST http://localhost:8081/management/refresh
 类似资料:
  • 我正在尝试使用spring cloud配置,1.3.0.release版本,我成功地启动了服务器 我尝试用下面的pom.xml构建简单的客户端 然后我使用mvn spring-boot:run,它总是停止 如果我添加依赖项 spring-boot-starter-web 它可以启动,但当我访问localhost:8080/env时,它总是返回404,这里缺少什么?

  • 那是我学习Kafka的初期。我正在检查我本地机器中的每一个Kafka属性/概念。 所以我遇到了属性,下面是我的理解。如果我误解了什么,请纠正我。 将消息发送到主题后,必须将消息写入至少关注者数。 还包括引导。 如果可用活动代理的数量(间接地,在同步副本中)少于指定的,则生产者将引发发布消息失败的异常。 以下是我创建上述场景所遵循的步骤 在本地启动了3个代理,代理ID为0、1和2 创建了主题insy

  • 但就是不管用。我也试过在-d中使用这个选项,但这也不起作用。 谢谢你的帮助

  • 下面是我正在使用的配置。消息没有错误,从exchange到队列都可以正常工作,并且侦听器可以进行转换,这很好。对于错误消息,我希望发生的是,当我抛出AmqpRejectAndDontRequeueException时,“rabbitQueue”将消息转发到死信交换,并最终进入“rabbitErrorQueue”但死信交换或队列上没有任何活动。有人知道我做错了什么吗?

  • 我正在开发一个带有的Spring Boot[web]REST风格的应用程序(因为它需要部署到现有的Tomcat服务器)。它有一个,其方法在调用时需要写入Redis。我让Redis服务器在localhost上运行(默认端口,没有密码)。POM文件的相关部分具有所需的启动器依赖关系: 当我部署战争并到达终点时,我得到这样的回应: 我在Spring Boot应用程序类中添加了以下内容: 在执行一些测试R

  • 我正试图使用两个redis节点设置哨兵。请找到内联的conf文件。 端口16371 dir“C:\程序文件\redis\16371\” loglevel通知 日志文件“C:\Program Files\redis\logs\16371.log” 哨兵监视器示例127.0.0.1 6371 *致命配置文件错误*读取配置文件,在第5行 有人能帮我把这个修好吗。蒂亚:)