美文网首页我爱编程
2.Spring Cloud 之创建配置中心服务-客户端

2.Spring Cloud 之创建配置中心服务-客户端

作者: PKAQ | 来源:发表于2017-09-08 10:11 被阅读2408次

    各个微服务想要使用配置中心服务非常简单,仅需要在bootstrap.yaml(或.properties)文件中稍作配置即可

    1.添加依赖

    `org.springframework.cloud:spring-cloud-starter-config:${cloud_config}`
    

    2.配置上下文

    bootstrap.yaml中添加

    spring:
        application:
            name: config-client
        cloud:
            config:
                # 配置中心地址
                uri: http://localhost:8888
                # 要应用的配置文件
                profile: dev
                # 要读取的配置文件名
                name: bravo
                # 对应服务端security设置的用户名密码
                username: pkaq
                password: pkaqx
    

    注意这里是bootstrap.yml而不是appliction.yml,因为bootstrap.yml会在应用启动之前读取, 而spring.cloud.config.uri会影响应用启动,关于上下文可参见如下内容.

    2.1 启动上下文

    Spring Cloud会创建一个Bootstrap Context,作为Spring应用的Application Context的父上下文。初始化的时候,Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的EnvironmentBootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap contextApplication Context有着不同的约定,所以新增了一个bootstrap.yml文件,而不是使用application.yml (或者application.properties)。保证Bootstrap ContextApplication Context配置的分离。

    推荐在bootstrap.yml or application.yml里面配置spring.application.name. 你可以通过设置spring.cloud.bootstrap.enabled=false来禁用bootstrap

    2.2 应用上下文层次结构

    如果你通过SpringApplication或者SpringApplicationBuilder创建一个Application Context,那么会为spring应用的Application Context创建父上下文Bootstrap Context。在Spring里有个特性,子上下文会继承父类的property sources and profiles ,所以main application context 相对于没有使用Spring Cloud Config,会新增额外的property sources。额外的property sources有:

    • “bootstrap” : 如果在Bootstrap Context扫描到PropertySourceLocator并且有属性,则会添加到CompositePropertySourceSpirng Cloud Config就是通过这种方式来添加的属性的,详细看源码ConfigServicePropertySourceLocator。下面也也有一个例子自定义的例子。
    • “applicationConfig: [classpath:bootstrap.yml]” ,(如果有spring.profiles.active=production则例如 applicationConfig: [classpath:/bootstrap.yml]#production): 如果你使用bootstrap.yml来配置Bootstrap Context,他比application.yml优先级要低。它将添加到子上下文,作为Spring Boot应用程序的一部分。下文有介绍。
        由于优先级规则,Bootstrap Context不包含从bootstrap.yml来的数据,但是可以用它作为默认设置。

    bootstrap.yml是由spring.cloud.bootstrap.name(默认:”bootstrap”)或者spring.cloud.bootstrap.location(默认空)

    覆盖远程属性

    property sourcesbootstrap context 添加到应用通常通过远程的方式,比如”Config Server”。默认情况下,本地的配置文件不能覆盖远程配置,但是可以通过启动命令行参数来覆盖远程配置。如果需要本地文件覆盖远程文件,需要在远程配置文件里设置授权
    spring.cloud.config.allowOverride=true(这个配置不能在本地被设置)。一旦设置了这个权限,你可以配置更加细粒度的配置来配置覆盖的方式,

    比如:

    spring:
        cloud:
            config:
                # 覆盖任何本地属性 
                overrideNone: true 
                # 仅仅系统属性和环境变量 
                overrideSystemProperties: false
    

    源文件见PropertySourceBootstrapPropertie

    3.启动服务,大功告成.

    端口号采用配置中心相应配置文件的端口
    启动后访问 http://localhost:port/say

    参考

    相关文章

      网友评论

        本文标题:2.Spring Cloud 之创建配置中心服务-客户端

        本文链接:https://www.haomeiwen.com/subject/xwlgjxtx.html