前言:想将项目放入到服务器内跑起来,此处用到配置中心SpringCloud Config;

一、概念

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。
由于每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的。
Spring Cloud 提供了 ConfigServer来解决这个问题.
Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
SpringCloud Config 分为服务端和客户端两部分。

服务端也称为分布式配置中心,他是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密 信息等访问接口。
客户端则是通过制定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。

一个使用微服务架构的应用系统可能会包括成百上千个微服务,配置各部相同,需求各不相同:
不同环境不同配置:例如数据源在不同的环境(开发,测试,生产)是不同的,可以通过配置中心运行期间可以动态调整。例如根据各个微服务的负载状况,动态调整数据源连接池大小或者熔断阀值,并且调整时不停止微服务(配置修改后可以自动更新)

二、将项目打包出去

1、先将父项目内导入的dto依赖项目导出

2、先将父项目导出

将pom文件中的认子注掉:

 导包:

3、将子类生产者导包

将此jar包拿出

4、就可在cmd内运行

三、解决

1、问题:多个项目依赖与一些配置,若一个配置改变,还要去改变项目的源码

2、解决:使用配置中心(SpringCloud config)

nacos config

对比:

3、演示

①、在父项目内导入依赖

        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

将认子放开:

②、新建一个客户端项目

 pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lv</groupId><artifactId>config-client</artifactId><version>0.0.1-SNAPSHOT</version><name>config-client</name><description>Demo project for Spring Boot</description><parent><artifactId>cloud01</artifactId><groupId>org.lv</groupId><version>1.0-SNAPSHOT</version></parent><dependencies></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.1</version><configuration><mainClass>com.lv.configclient.ConfigClientApplication</mainClass></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

③、新建配置

注意:nacos服务中的application.properties文件中,连接数据库的密码需要注意

email: host: qq.comusername: rootpassword: 123456

④、从项目中读取配置中心的内容

新建application.yml与bootstrap.yml文件

SpringBoot默认支持properties和YAML两种格式的配置文件。
bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等
application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。
bootstrap.yml 先于 application.yml 加载

在父类导入依赖:

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

bootstrap.yml文件:

server:port: 8083
spring:application:# 会自动根据服务名拉取data-id对应的配置文件.如果data-id跟服务名不一致 就需要手动指定data-id# 跟服务名相同的data-id的配置文件,称之为默认的配置文件# 除了默认的配置文件,其他配置文件必须写上后缀name: config-clientcloud:nacos:discovery:  #注册中心server-addr: 127.0.0.1:8848# username: nacos# password: nacosconfig: #配置中心prefix: ${spring.application.name}
#指定nacos配置中心地址server-addr: 127.0.0.1:8848file-extension: yml # 使用的 nacos 配置集的 dataId 的文件拓展名,同时也是
#  Nacos 配置集的配置格式,默认为 properties
#        namespace: f1896568-xxxx-45d8-8a93-a64c5bcc22ff  # 使用的 nacos 的命名空间,默认为 nullgroup: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP共享配置集数组
#        shared-configs:
#            - data-id: shared-dataId-01.yaml
#              group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
#                  refresh: true # 是否自动刷新配置,默认为 false@RefreshScope 实现配置实时更新

在此启动类注入:

@EnableDiscoveryClient
@SuppressWarnings("all")
// 自动填充
@Configuration
@Data
@ConfigurationProperties(prefix = "email")public class EmailProperties{private String host;private String username;private String password;}

新建测试类,拿取数据:

将配置中心直接拿取到application.yml文件

package com.lv.configclient;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@SuppressWarnings("all")
//刷新配置
@RefreshScope
public class TestController {//    yml注入@Value("${email.host}")private String host;@Value("${email.username}")private String username;@Value("${email.password}")private String password;//    注入EmailProperties@Autowiredprivate ConfigClientApplication.EmailProperties properties;@RequestMapping("/test01")public String test01(){StringBuffer sb=new StringBuffer();sb.append("<b>host</b>:"+host);sb.append("<br><b>username</b>:"+username);sb.append("<br><b>password</b>:"+password);sb.append("<br><b>properties</b>:"+properties);return sb.toString();}}

⑤、远程配置读取

Ⅰ、新增配置中心

 Ⅱ、共享配置集数组

bootstrap.yml:

#        共享配置集数组shared-configs:- data-id: config-redis.ymlgroup: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUPrefresh: true # 是否自动刷新配置,默认为 false@RefreshScope 实现配置实时更新

 Ⅲ、测试类TestController

    @Value("${redis.host}")private String redisHost;@Value("${redis.port}")private String redisPort;
 @RequestMapping("/test01")public String test01(){StringBuffer sb=new StringBuffer();sb.append("<b>host</b>:"+host);sb.append("<br><b>username</b>:"+username);sb.append("<br><b>password</b>:"+password);sb.append("<br><b>properties</b>:"+properties);sb.append("<br><b>host</b>:"+redisHost);sb.append("<br><b>port</b>:"+redisPort);return sb.toString();}

⑥、切环境

找到命名空间: 

 新建几个空间:

将两个配置列表分配到测试和开发的空间: 

 注:需要到空间里将克隆的文件改成yml文件

 需要哪个空间就填入哪个命名空间id

namespace: f1896568-xxxx-45d8-8a93-a64c5bcc22ff # 使用的 nacos 的命名空间,默认为 null

 运行为开发环境:

⑦、共享位置+环境

 将config-client项目导出:

 拿出jar包:

运行jar包:

将此yml文件取消,不定死

namespace: f1896568-xxxx-45d8-8a93-a64c5bcc22ff # 使用的 nacos 的命名空间,默认为 null

直接到文件运行执行以下语句,

jar
java -jar xx.jar
java -jar xx.jar --spring.cloud.nacos.config.namespace=命名空间id

启动成功:

 注意:在nacos配置中心的配置内容,不能出现中文,否则报错

本期内容结束~~~~

SpringCloud之配置中心相关推荐

  1. SpringCloud config 配置中心集群配置以及整合消息总线BUS实现关联微服务配置自动刷新

    一.SpringCloud Config 基本配置中的问题 在上一章节<SpringCloud config 配置中心介绍与基本配置使用>中我们现实了配置中心的配置集中管理.调用微服务应用 ...

  2. springcloud 分布式配置中心 config server config client

    ---------------------------------------------------------------------------------------------------- ...

  3. Java之 Spring Cloud 微服务的 SpringCloud Config 配置中心(第四个阶段)【二】【SpringBoot项目实现商品服务器端调用】

    SpringCloud学习目录点击跳转对应的文章 Java之 Spring Cloud 微服务搭建(第一个阶段)[一][SpringBoot项目实现商品服务器端是调用] Java之 Spring Cl ...

  4. 【SpringCloud】配置中心简介及其搭建

    Spring Cloud是现在流行的分布式框架,提供可很多组件,比如我们熟悉的eureka,zuul,ribbon等组件.当然还有配置中心,他提供了配置文件的统一管理,可以很快速的切换不同的环境.说的 ...

  5. spring boot pom配置_125 SpringCloud服务配置中心

    1. 为什么需要使用配置中心 (1) 常用的配置管理解决方案有哪些缺点? 硬编码:需要修改代码的话繁琐且风险大: 配置写在properties里面,在集群环境下,需要替换和重启: 写在xml文件中,一 ...

  6. 六、springcloud之配置中心Config

    一.配置中心提供的核心功能 Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持.配置服务器为各应用的所有环境提供了一个中心化的外部配置.它实现了对服务端和客户端对S ...

  7. springcloud config配置中心概述

    Spring Cloud Config简介 Spring Cloud Config 是 Spring Cloud 家族中最早的配置中心,虽然后来又发布了 Consul 可以代替配置中心功能,但是 Co ...

  8. SpringCloud config 配置中心介绍与基本配置使用

    一.SpringCloud Config 介绍 出现背景:在微服务架构中,在没有配置中心出现时,我们每个应用的配置信息都在其配置文件application.properties中维护.加入整个系统中有 ...

  9. springcloud分布式配置中心(二)-阿波罗apollo

    1.Springcloud的分布式配置中心组件 组件一般有两个,springcloud config,apollo.apollo有一个好处是apollo有界面,这是apollo的一个优势. sprin ...

  10. SpringCloud 分布式配置中心Config Hoxton版本

    Spring Cloud Config简介:Spring Cloud Config为分布式系统提供了服务端和客户端用于支持外部配置.使用Config Server可以在所有环境中管理应用程序的外部属性 ...

最新文章

  1. 进阶学习(3.12) Operand Pattern 装饰器模式
  2. C++ 中判断非空的错误指针
  3. ConcurrentMap接口
  4. Angular中父子组件之间父组件给子组件传值、传递方法、传递自己
  5. Linux(一)——基础入门(1)
  6. Google Hacking技术
  7. OMM机房监控系统引领机房监控新趋势
  8. 萌龙大乱斗 合成表 持续更新
  9. Android Thing专题5 I2C
  10. Rust: String 与 str
  11. python threading thread_Python: 关于thread模块和threading模块的选择
  12. simulink过零检测的作用
  13. c语言课程设计--太空战机,基于Funcode平台的软件课程设计
  14. textView属性
  15. 使用LTT升级HP磁带机的固件程序
  16. (转)文通慧视的用法
  17. 画象棋棋盘c语言程序设计教程课后答案,绘制中国象棋棋盘(c语言)
  18. RabbitMQ入门教程(十四):RabbitMQ单机集群搭建
  19. ACA-MB600面包机成功配方(献给最菜的菜鸟们)
  20. Python 火车停靠站点时间查询

热门文章

  1. IntelliJ IDEA取消自动删除空格
  2. ps拉腿,瘦身,去除水印等功能学习分享~
  3. caj粘贴到word后换行
  4. Mule学习(五、Mule Expression Language - MEL表达式)
  5. 互链周报 | 上周区块链新项目披露17个,融资项目7个,扶持政策中国占大半
  6. Android中导入项目编译时报错:Java home supplied via ‘org.gradle.java.home‘ is invalid. Invalid directory...
  7. 郑州轻工业大学OJ合集(C语言)【正在整理】
  8. Qt编写的项目作品25-硬件综合应用(热敏打印+身份证+短信猫)
  9. 使用tableau超市案例创建前N名销售额最高的产品
  10. 用css画三角形、爱心、钻石