Rys*_*Rys 203 java spring spring-boot spring-cloud
在spring boot中将属性放在application.yml或bootstrap.yml上有什么区别?在logging.config情况下,应用程序的工作方式不同.
小智 252
我刚刚问过Spring Cloud
这些人,并认为我应该分享我在这里的信息.
bootstrap.yml
之前加载application.yml
.
它通常用于以下方面:
spring.application.name
和spring.cloud.config.server.git.uri
内bootstrap.yml
encryption/decryption
信息从技术上讲,bootstrap.yml
由父Spring加载ApplicationContext
.该父级ApplicationContext
在使用之前加载application.yml
.
dus*_*ltz 72
bootstrap.yml
要么 bootstrap.properties
如果您使用Spring Cloud并且您的应用程序配置存储在远程配置服务器(例如Spring Cloud Config Server)上,则仅使用/需要它.
从文档:
Spring Cloud应用程序通过创建"引导程序"上下文来运行,该上下文是主应用程序的父上下文.开箱即用,它负责从外部源加载配置属性,还解密本地外部配置文件中的属性.
请注意,bootstrap.yml
或者bootstrap.properties
可以包含其他配置(例如默认值),但通常只需要在此处输入bootstrap配置.
通常它包含两个属性:
spring.cloud.config.uri
)spring.application.name
)启动时,Spring Cloud使用应用程序的名称对配置服务器进行HTTP调用,并检索该应用程序的配置.
application.yml
要么 application.properties
包含标准应用程序配置 - 通常是默认配置,因为在引导过程中检索的任何配置都将覆盖此处定义的配置.
Vai*_*rma 22
这个答案已经在著作"非常漂亮解释微服务的面试问题,对于Java开发人员(春季启动,春季云,云本地应用程序)由Munish Chandel,1.30版,2018年3月25日.
以下内容摘自他的书,这个答案的总功劳归于该书的作者,即Munish Chandel
application.yml
application.yml/application.properties文件特定于Spring Boot应用程序.除非您更改应用程序的外部属性的位置,否则spring boot将始终将application.yml加载到以下位置:
/src/main/resources/application.yml
Run Code Online (Sandbox Code Playgroud)
您可以在此文件中存储应用程序的所有外部属性.可以在以下位置找到任何Spring Boot项目中可用的公共属性:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html您可以将这些属性自定义为根据您的应用需求.示例文件如下所示:
spring:application:name:foobar datasource:driverClassName:com.mysql.jdbc.Driver url:jdbc:mysql:// localhost/test server:port:9000
bootstrap.yml
另一方面,bootstrap.yml特定于spring-cloud-config,并在application.yml之前加载
只有在使用Spring Cloud并且您的微服务配置存储在远程Spring Cloud Config Server上时才需要bootstrap.yml.
关于bootstrap.yml的重点
spring:
application:
name: foobar
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/test
server:
port: 9000
Run Code Online (Sandbox Code Playgroud)
spring.application.name: "application-name" spring.cloud.config.server.git.uri: "git-uri-config"
启动时,Spring Cloud使用应用程序的名称向Spring Cloud Config Server发出HTTP(S)调用,并检索该应用程序的配置.
application.yml包含微服务的默认配置,在引导过程中检索的任何配置(从云配置服务器)将覆盖application.yml中定义的配置
好吧,我完全同意在这一点上已经存在的答案:
bootstrap.yml
用于保存指出远程配置在哪里的参数,并使用这些远程配置创建Bootstrap 应用程序上下文。实际上,它也可以像application.yml
do一样存储普通属性。但是要注意这个棘手的事情:
bootstrap.yml
,它们的优先级将低于几乎任何其他属性源,包括 application.yml。如上所述这里。让我们说清楚,有两种与 相关的属性bootstrap.yml
:
bootstrap.yml
用来查找属性持有者(文件系统、git 仓库或其他东西),我们通过这种方式获得的属性具有很高的优先级,因此它们不能被本地配置覆盖。如上所述这里。bootstrap.yml
。如前所述,它们将获得较低的优先级。使用它们来设置默认值可能是个好主意。因此,在 Spring Boot上application.yml
或bootstrap.yml
Spring Boot 中放置属性之间的区别是:
bootstrap.yml
.application.yml
将获得更高的优先级。小智 6
这里只有我的 2 美分..
Bootstrap.yml 或 Bootstrap.properties 用于从 Spring Cloud Server 获取配置。
例如,在我的 Bootstrap.properties 文件中,我有以下配置
spring.application.name=Calculation-service
spring.cloud.config.uri=http://localhost:8888
Run Code Online (Sandbox Code Playgroud)
在启动应用程序时,它尝试通过连接到http://localhost:8888来获取服务的配置,并查看 Spring Cloud Config 服务器中存在的 Calculation-service.properties
您可以在启动时从 Calcuation-Service 的日志中验证相同的内容
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
归档时间: |
|
查看次数: |
74465 次 |
最近记录: |