《Spring Cloud Config官方文档》快速启动

原文链接

第二部分 Spring Cloud 配置

1.3.5.BUILD-SNAPSHOT

Spring Cloud 配置为分布式系统中的外部配置提供服务器和客户端支持。借助Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念与Spring Environment 和  PropertySource 抽象是一样的,所以它们非常适合Spring应用程序,但可以与任何运行在任何语言的应用程序一起使用。当应用程序从开发到测试转移到部署管道时,您可以管理这些环境之间的配置,并确保应用程序具有在迁移时所需运行的所有内容。服务器存储后端的默认实现使用git,因此它可以轻松地支持标记版本的配置环境,并且可以通过广泛的工具来访问管理内容。使用Spring配置添加替代实现并插入它们是很容易的。

4.快速启动

启动服务器:

$ cd spring-cloud-config-server
$ ../mvnw spring-boot:run

服务器是一个Spring Boot应用程序,所以如果你喜欢(主类是 ConfigServerApplication ),你可以从你的IDE运行它 。然后尝试一个客户端:

$ curl localhost:8888/foo/development
{"name":"foo","label":"master","propertySources":[
  {"name":"https://github.com/scratches/config-repo/foo-development.properties","source":{"bar":"spam"}},
  {"name":"https://github.com/scratches/config-repo/foo.properties","source":{"foo":"bar"}}
]}

定位属性资源的默认策略是克隆一个git仓库(at  spring.cloud.config.server.git.uri )并使用它来初始化一个mini  SpringApplication 。迷你应用程序的 Environment  用于枚举属性源并通过JSON节点发布它们。

HTTP服务具有以下形式的资源:

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

其中在 SpringApplication中(即:在一个普通的Spring Boot的应用程序中是作为标准“应用”)“application”是作为 spring.config.name 来注入的,“profile”是一个活动的配置文件(或逗号分隔的属性列表),和“label”是一种可选的git标签(默认为“master”)。

Spring Cloud Config Server从git仓库(必须提供)中为远程客户端提取配置:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo

4.1客户端使用

要在应用程序中使用这些功能,只需将其构建为依赖于 spring-cloud-config-client 的 Spring Boot应用程序(例如,请参阅 config-client 的测试用例或示例应用程序)。添加依赖项的最简便的方法是通过Spring Boot启动器 org.springframework.cloud:spring-cloud-starter-config 。 对于Maven用户还有一个父pom和BOM(spring-cloud-starter-parent),还有一个针对 Gradle和Spring CLI用户的Spring IO版本管理属性文件。示例Maven配置:

pom.xml中。

<parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>1.3.5.RELEASE</version>
       <relativePath /> <!-- lookup parent from repository -->
   </parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
    </plugins>
</build>

   <!-- repositories also needed for snapshots and milestones -->

然后你可以创建一个标准的Spring Boot应用程序,就像这个简单的HTTP服务器:

@SpringBootApplication
@RestController
public class Application {

    @RequestMapping("/")
    public String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

运行时,它将从端口为8888的默认本地配置服务器(如果它正在运行)中选取外部配置。要修改启动行为,你可以在 bootstrap.properties中改变配置服务器的位置(比如,在application.properties 中可以对在应用程序上下文的引导阶段进行设置),例如

spring.cloud.config.uri: http://myconfigserver.com

引导属性将在 /env 节点中显示为高优先级属性源,例如

$ curl localhost:8080/env
{
  "profiles":[],
  "configService:https://github.com/spring-cloud-samples/config-repo/bar.properties":{"foo":"bar"},
  "servletContextInitParams":{},
  "systemProperties":{...},
  ...
}

(名称为“configService:<远程存储库的URL> / <文件名>”的属性源包含属性“foo”和属性值“bar”,并且是最高优先级)。

属性源名称中的URL是git仓库中的地址而不是配置服务器URL。

 

 

原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/98279.html

(0)
上一篇 2021年8月20日 23:37
下一篇 2021年8月20日 23:44

相关推荐

发表回复

登录后才能评论