SpringCloud之配置中心(config)的使用

配置中心的作用就在于可以在项目启动时加载远程或本地的配置文件,将配置文件集中管理

springboot版本:

2.1.6.RELEASE

springcloud版本:

Finchley.RELEASE

一、注册中心

 1、依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>

 2、配置文件

server.port=8090
spring.application.name=eureka-server
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://localhost:8090/eureka/

 配置说明

  • eureka.client.register-with-eureka:表示是否将自己注册到Eureka Server,默认是true。
  • eureka.client.fetch-registry:表示是否从Eureka Server获取注册信息,默认为true。

  接下来只需要在主启动类上加上@EnableEurekaServer注解就万事大吉了

二、配置中心服务端:

 1、依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

 2、配置文件

server.port=8050
spring.application.name=config-server
# 注册到服务注册中心
eureka.client.service-url.defaultZone=http://localhost:8090/eureka/
# github的仓库地址
spring.cloud.config.server.git.uri=https://github.com/kurean/springconfig.git
# github的文件路径
spring.cloud.config.server.git.searchPaths=repo
# github的分支,默认是master
spring.cloud.config.label=master

 最后只要在主启动类上添加@EnableConfigServer@EnableEurekaClient后就可以了

说明:

  1、如果在GitHub上建立的仓库是私有的,那么还要加上spring.cloud.config.server.git.username和spring.cloud.config.server.git.password 这两个配置

  2、springcloud config 的URL与配置文件的映射关系如下:

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

  3、如果github上建立的目录下的文件为configtest-dev.properties,那么当启动配置中心服务器端时,可以通过http://localhost:8050/configtest/dev/master访问配置文件,如果访问成功则表示配置中心搭建成功

三、配置中心客户端

 1、依赖

<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.cloud</groupId>   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>

 2、配置文件

  创建bootstrap.properties文件,这时项目启动时会通过这个文件从配置中心服务端中设置的配置文件存放地址加载指定的配置文件,因为这个文件是优先于application.properties文件加载的,因此指定注册中心的配置需要放在前者中,否则会造成启动失败

spring.cloud.config.name=configtest
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
eureka.client.service-url.defaultZone=http://localhost:8090/eureka/
spring.application.name=config-client
server.port=9006

当然,端口号和服务名字可以放在application.properties中

配置说明:

  • spring.cloud.config.name和spring.cloud.config.profile的值结合就是GitHub上上传的配置文件名,中间用"-"隔开,至于是.properties还是.yml取决于你在本地项目中使用的配置文件是前者还是后者
  • 如果项目中没有使用注册中心,那么spring.cloud.config.discovery.serviceId就要改成spring.cloud.config.uri来指定配置中心服务端的地址

这时就可以创建一个controller来试试效果了

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigClientController {

    @Value("${cs.name}")
    String name;
    @Value("${cs.age}")
    String age;

    @GetMapping(value = "/hi")
    public String hi(){
        return "我的名字是:"+name+",年龄是:"+age;
    }
}

github上的配置文件

 configtest-dev.properties

cs.name=kevin
cs.age=18

测试效果

最后,如果遇见Eureka Client启动后就关闭日志打印“ Unregistering application xxx with eureka with status DOWN”,多半是因为本身项目作为web项目启动时没有导入web依赖所致,只要加入就好了

参考文章:https://blog.csdn.net/qazwsxpcm/article/details/88578076

猜你喜欢

转载自www.cnblogs.com/nastynail/p/12517247.html