在应用程序上放置属性的区别是什么?Yml或bootstrap。穿弹簧靴的Yml ? 在日志记录。配置情况下,应用程序的工作方式不同。
当前回答
我刚刚问了Spring Cloud的人,我想我应该在这里分享我的信息。
引导。Yml在application.yml之前加载。
它通常用于以下情况:
当使用Spring Cloud Config Server时,你应该在bootstrap.yml中指定Spring .application.name和Spring . Cloud . Config . Server .git.uri 一些加密/解密信息
从技术上讲,引导。yml是由父Spring ApplicationContext加载的。父ApplicationContext在使用application.yml的ApplicationContext之前加载。
其他回答
bootstrap的另一种用法。Yml是从kubernetes configmap和secret资源中加载配置。应用程序必须导入spring-cloud-starter-kubernetes依赖项。
与Spring Cloud配置一样,这必须在引导阶段进行。
从文档中可以看出:
spring:
application:
name: cloud-k8s-app
cloud:
kubernetes:
config:
name: default-name
namespace: default-namespace
sources:
# Spring Cloud Kubernetes looks up a ConfigMap named c1 in namespace default-namespace
- name: c1
因此,使用meta.name default-name存储在configmap资源中的属性可以被引用,就像application.yml中的属性一样
同样的过程也适用于秘密:
spring:
application:
name: cloud-k8s-app
cloud:
kubernetes:
secrets:
name: default-name
namespace: default-namespace
sources:
# Spring Cloud Kubernetes looks up a Secret named s1 in namespace default-namespace
- name: s1
我刚刚问了Spring Cloud的人,我想我应该在这里分享我的信息。
引导。Yml在application.yml之前加载。
它通常用于以下情况:
当使用Spring Cloud Config Server时,你应该在bootstrap.yml中指定Spring .application.name和Spring . Cloud . Config . Server .git.uri 一些加密/解密信息
从技术上讲,引导。yml是由父Spring ApplicationContext加载的。父ApplicationContext在使用application.yml的ApplicationContext之前加载。
引导。Yml用于从服务器获取配置。它可以用于Spring云应用程序,也可以用于其他应用程序。通常是这样的:
spring:
application:
name: "app-name"
cloud:
config:
uri: ${config.server:http://some-server-where-config-resides}
当我们启动应用程序时,它会尝试连接到给定的服务器,并根据运行/调试配置中提到的spring概要文件读取配置。
如果服务器不可达,应用程序甚至可能无法进一步进行。但是,如果本地存在与概要文件匹配的配置,则服务器配置将被覆盖。
好的方法:
维护一个单独的配置文件本地和运行应用程序使用不同的配置文件。
嗯,我完全同意关于这一点已经存在的答案:
引导。yml用于保存指出远程配置位置的参数,并使用这些远程配置创建引导应用程序上下文。
实际上,它也能够存储与应用程序相同的普通属性。yml做。但请注意这个棘手的问题:
如果你在引导中放置属性。Yml,它们的优先级将低于几乎任何其他属性源,包括application.yml。如这里所述。
让我们弄清楚,有两种与bootstrap.yml相关的属性:
在引导阶段加载的属性。我们使用自举法。yml来找到属性持有者(一个文件系统,git存储库或其他东西),并且我们以这种方式获得的属性具有高优先级,所以它们不能被本地配置覆盖。如这里所述。 在bootstrap.yml中。如前所述,它们的优先级将较低。使用它们来设置默认值也许是个好主意。
这就是把属性放到应用程序上的区别。Yml或bootstrap。春靴中的Yml有:
在引导阶段加载配置文件的属性只能放在bootstrap.yml中。 至于所有其他类型的属性,将它们放在应用程序中。Yml将获得更高的优先级。
这只是我的两毛钱。
引导。yml或Bootstrap。properties用于从Spring Cloud Server获取配置。
例如,在My Bootstrap中。我有以下配置文件
spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888
在启动应用程序时,它试图通过连接到http://localhost:8888来获取服务的配置,并查看Calculation-service。Spring Cloud Config服务器中显示的属性
您可以在启动compute - service时从它的日志中验证相同的内容
INFO 10988——[restartedMain] c.c.c configservicepropertysourcelocator:从服务器获取配置在:http://localhost:8888
推荐文章
- 在Java中使用UUID的最重要位的碰撞可能性
- 转换列表的最佳方法:map还是foreach?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- Mockito.any()传递带有泛型的接口
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 使用String.split()和多个分隔符
- Java数组有最大大小吗?
- 在Android中将字符串转换为Uri
- 从JSON生成Java类?
- 为什么java.util.Set没有get(int index)?
- Swing和AWT的区别是什么?
- 为什么Java流是一次性的?
- 四舍五入BigDecimal *总是*有两位小数点后
- 设计模式:工厂vs工厂方法vs抽象工厂