如何用spring boot 2.0覆盖applicationContext.getId()?

如何用spring boot 2.0覆盖applicationContext.getId()?,spring,spring-boot,spring-cloud,Spring,Spring Boot,Spring Cloud,我们最近升级到SpringBoot2.0,并注意到应用程序上下文ID不再是唯一的。以前,如果我们设置spring.application.index,ContextIdApplicationContextInitializer将使用它来构造应用程序上下文id。如何设置最佳id?目标是将主机名作为id的一部分,以保持系统的不同。SpringCloud文档仍然引用旧方法: 更新 过去的情况是,spring.application.name在项目的源代码(即我的应用程序)中设置,spring.appl

我们最近升级到SpringBoot2.0,并注意到应用程序上下文ID不再是唯一的。以前,如果我们设置
spring.application.index
ContextIdApplicationContextInitializer
将使用它来构造应用程序上下文id。如何设置最佳id?目标是将主机名作为id的一部分,以保持系统的不同。SpringCloud文档仍然引用旧方法:

更新
过去的情况是,
spring.application.name
在项目的源代码(即我的应用程序)中设置,
spring.application.index
将在运行时设置(即1e4f630be),然后
applicationContext.id
的值将为
my-app-1e4f630be
。现在,它的值总是
my-app-1
。实现不再引用
spring.application.index
。这是版本之间的一个重大变化,我还没有找到关于如何使用spring boot 2.0正确自定义id的示例或文档。您是否考虑过设置
spring.application.name
并将主机名包含在其值中?默认情况下,SpringCloud使用
spring.application.name
将服务实例标识为同一类型。同样在默认情况下,我们使用
${spring.application.name}:${hostname}:${spring.application.instance_id:${server.port}
创建实例id。所以它应该是独一无二的。你是否看到了其他情况?@Spencergib这听起来像是SpringBoot1.5中的代码,但在2中有所不同。0@AndyWilkinson我可以试试看,这看起来像是一种变通。我希望我们可以将spring.application.name设置为我的应用程序的真实名称(myapp),但该ID将是唯一的,即myapp:machine1或myapp:machine2@pgreen2这就是代码现在所做的。你还没说发生了什么。