SpringCloud微服务实战之配置中心Config

Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中基础设施和微服务应用提供集中化的外部配置支持,它分为服务端和客户端两个部分。

一、服务端配置
1、创建SpringCloud-Config项目,搭建服务配置中心
这里写图片描述

2、在pom中添加Config依赖

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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
    </dependencies>

3、再主类中使用注解@EnableConfigServer,开启Config Server功能。
4、添加application.propertise文件中增加配置:

server.port=9001
spring.application.name=config-server

spring.cloud.config.server.git.uri=https://gitee.com/hdkn/archDemo
spring.cloud.config.server.git.searchPaths=config-repo
spring.cloud.config.label=master
spring.cloud.config.server.git.username=XXXXX
spring.cloud.config.server.git.password=XXXXXX

eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/
  • spring.cloud.config.server.git.uri:配置git仓库位置
  • spring.cloud.config.server.git.searchPaths:仓库位置下的相对位置,可以配置多个
  • spring.cloud.config.label:指明远程仓库的分支
  • spring.cloud.config.server.git.username:访问git的用户名,公开库可以不配
  • spring.cloud.config.server.git.password:访问git密码,公开库可以不配

    如上配置,在https://gitee.com/hdkn/archDemo下创建config-repo文件夹。根据不同环境,在文件夹下创建不同文件

  • XXXX.properties

  • XXXX-dev.properties
  • XXXX-test.properties
  • XXXX-prod.properties

    我这里创建demo-dev.properties,内容

    greeting=hello world

5、启动项目测试:http://localhost:9001/greeting/dev
这里写图片描述

二、客户端
1、创建SpringCloud-ConfigClient项目
这里写图片描述
2、在pom中添加依赖

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

3、新增bootstrap.properties文件

spring.application.name=demo
spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri= http://localhost:9001/
server.port=9002

这里spring.application.name要和远程仓库中的propertise文件的application名一样,我这里第一次没有配置正确,使用@Value注入greeting时报错。


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.clientController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: java.lang.String com.spring.springcloud.rest.ClientController.greeting; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'greeting' in string value "${greeting}"
...

4、创建Controller类测试

@RefreshScope
@RestController
public class ClientController {

    @Value("${greeting}")
    String greeting;

    @RequestMapping("/hello")
    public String getGreetingInfo(){
        return this.greeting;
    }
}

这里写图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值