Spring.application.name在Bootstrap.properties中的重要性

时间:2018-01-16 02:18:29

标签: java spring spring-cloud spring-cloud-config

您好我有一个spring cloud配置服务器设置。 我有多个配置文件(环境) - dev,prod,test等。

配置客户端上的bootstrap.properties的内容是 -

        spring.application.name=hazelcast,kafka.
        ....
        .... including uri of config server.

现在在配置服务器指向的我的存储库中,除了特定于环境的application-dev.properties,application-prod.properties等之外还有application.properties。我还有hazelcast-dev.properties,hazelcast-prod .properties,kafka-dev.properties,kafka-prod.properties等。

当我运行配置客户端spring boot应用程序时,profiles.active设置为dev。配置客户端能够从服务器检索以下文件 -

1.application.properties。

2.application-dev.properties。

3.hazelcast-dev.properties。

4.kafka-dev.properties。

当我使用prod配置文件激活时,将检索相应的prod文件(其中的值将添加到spring的环境中)。

现在这很有用,那很好,但我想了解它背后的逻辑。 spring.application.name是否特意适用于此?

http://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.0.0.M5/single/spring-cloud-config.html

我查看了文档,但事情并非完全清楚。

提前谢谢!

编辑 -

https://cloud.spring.io/spring-cloud-static/spring-cloud.html#_application_context_hierarchies

以上链接中的Section Bootstrap应用程序上下文几乎已经回答了我的问题,但希望有人能够确认它。

3 个答案:

答案 0 :(得分:6)

它有几个不同的目的。在注册eureka等服务注册表时,它将用作应用程序名称。它还用于在configserver中查找<applicationName>[-<profile>].[properties|yml]以及在consul或zookeeper中查找配置。

答案 1 :(得分:0)

如果您在Openshift上部署Spring项目; Spring使用它来查找在configmap中声明的,在openshift-project中具有相同名称的资源。

答案 2 :(得分:0)

除了

  1. 将spring应用程序名称注册到命名服务器(Netflix Eureka)
  2. 从Spring Cloud配置中按应用程序名称和配置文件获取配置。

它也用在

  1. Spring总线用于处理spring应用程序以调用Bus Refresh(/actuator/bus-refresh/{destination})和Bus Env(/actuator/bus-env/{destination})端点

Addressing an Instance