ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## **1. 需求分析** 将创建一个Eureka服务与Product商品提供者服务,它们两个微服务的配置信息均从GitHub获取 ,从而实现统一配置分布式管理,完成多环境的变量。 ### **1.1 上传配置文件到git** #### **1.1.1 上传Eureka server配置文件到GitHub** 1. 在 D:\\gitStudy\\SpringCloud\\microservice\-cloud\-config 目录下新建 microservice\-config\-eureka.yml 文件,profile: dev 禁用了自我保护机制, profile: prod 开启了自我保护机制 ``` #注意:如果在记事本上编写,下面的缩进不要使用Tab来缩进,不然报错 spring: profiles: active: dev # 激活开发环境配置 --- server: port: 6001 #端口号 spring: profiles: dev # 开发环境 application: name: microservice-config-eureka eureka: instance: hostname: eureka6001.com client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://eureka6001.com:6001/eureka/ server: enable-self-preservation: false # 禁用自我保护机制***************** --- server: port: 6001 #端口号 spring: profiles: prod # 生产环境 application: name: microservice-config-eureka eureka: instance: hostname: eureka6001.com client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://eureka6001.com:6001/eureka/ server: enable-self-preservation: true # 开启自我保护机制***************** ``` push到git上 ``` # 添加到暂存区 $ git add microservice-config-eureka.yml # 提交到本地库 $ git commit -m "first commit" microservice-config-eureka.yml # 推送到远程库origin 的 master 主分支上 $ git push origin master ``` #### **1.1.2 上传服务提供端配置到GitHub上** 1. 在 D:\\gitStudy\\SpringCloud\\microservice\-cloud\-config 目录下 新建 microservice\-config\-product.yml 文件, 内容如下: 不同环境 数据名不一样,dev 数据库使用 springcloud\_db01, prod 数据库使用 springcloud\_db02 ``` #注意:如果在记事本上编写,下面的缩进不要使用Tab来缩进,不然报错 spring: profiles: active: dev # 激活开发环境配置 --- server: port: 8001 mybatis: config-location: classpath:mybatis/mybatis.cfg.xml type-aliases-package: com.mengxuegu.springcloud.entities mapper-locations: classpath:mybatis/mapper/**/*.xml spring: profiles: dev # 开发环境 application: name: microservice-product-config # ******服务名******* datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.56.10:3306/springcloud_db01?serverTimezone=GMT%2B8 #数据库连接地址,*****注意库名 db01*************** username: root password: root dbcp2: min-idle: 5 initial-size: 5 max-total: 5 max-wait-millis: 150 eureka: client: registerWithEureka: true fetchRegistry: true serviceUrl: defaultZone: http://eureka6001.com:6001/eureka instance: instanceId: ${spring.application.name}:${server.port} prefer-ip-address: true --- server: port: 8001 mybatis: config-location: classpath:mybatis/mybatis.cfg.xml type-aliases-package: com.mengxuegu.springcloud.entities mapper-locations: classpath:mybatis/mapper/**/*.xml spring: profiles: prod # 生产环境 application: name: microservice-product-config # ******服务名******* datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.56.10:3306/springcloud_db02?serverTimezone=GMT%2B8 #数据库连接地址,*****注意库名 db02*************** username: root password: root dbcp2: min-idle: 5 initial-size: 5 max-total: 5 max-wait-millis: 150 eureka: client: registerWithEureka: true fetchRegistry: true serviceUrl: defaultZone: http://eureka6001.com:6001/eureka instance: instanceId: ${spring.application.name}:${server.port} prefer-ip-address: true ``` 上传到git ``` # 添加到暂存区 $ git add microservice-config-product.yml # 提交到本地库 $ git commit -m "first commit" microservice-config-product.yml # 推送到远程库origin 的 master 主分支上 $ git push origin master ``` ### **1.2 构建 Config 版的Eureka服务端** **1. 创建Eureka服务端模块`eureka-config`** ![](https://img.kancloud.cn/f1/52/f152c43c58829ec0217701285ce7abfd_338x295.png) **2. 修改pom文件,加入Eureka server和config依赖启动器** ``` <dependencies> <!-- Spring Cloud Config 客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <!-- 导入Eureka-server 服务端依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> ``` **3. 在resources 目录下创建并配置 bootstrap.yml 文件,用来指定git配置信息** **要指定配置文件名称、profile、config-server地址** ~~~ spring: cloud: config: name: microservice-config-eureka #github上的配置名称,注意没有yml后缀名 profile: dev #本次访问的环境配置项 label: master #远程库的分支名 uri: http://localhost:5001 #Config配置中心地址,通过它获取microservice-config-eureka.yml配置信息 ~~~ **4. 在resources 目录下创建并配置 application.yml** ~~~ spring: application: name: microservice-eureka-config ~~~ **5. 创建启动类,并用注解开启Eureka server** ~~~ @EnableEurekaServer //标识一个Eureka Server 服务注册中心 @SpringBootApplication public class EurekaconfigServer_6003 { public static void main(String[] args) { SpringApplication.run(EurekaconfigServer_6003.class, args); } } ~~~ **6. 测试** * [ ] 先启动 Config 配置中心: microservice-cloud-11-config-server-5001 * [ ] 再启动Eureka 注册中心: microservice-cloud-13-eureka-config-6001 * [ ] 访问:http://eureka6001.com:6001/ * [ ] 根据 bootstrap.yml 文件中的 profile: dev, 所以是禁止了自我保护机制 ![](https://img.kancloud.cn/82/bb/82bbe2069b8c2dacab960f17378cce93_1328x514.png) ### **1.3 构建 Config 版的Product微服务** 还是用原来的服务提供端做 ![](https://img.kancloud.cn/29/16/29168e36c8d2f0f263568bd6339506ec_410x357.png) **注意一定要加入config客户端依赖** ~~~ <!-- Spring Cloud Config 客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> ~~~ **1. 在resources 目录下创建并配置 bootstrap.yml 文件** ~~~ spring: cloud: config: name: microservice-config-product #github上的配置名称,注意没有yml后缀名 profile: prod # 本次访问的环境配置项 label: master # 远程库的分支名 uri: http://localhost:5001 #Config配置中心地址,通过它获取microservice-config-product.yml配置信息 ~~~ **2. 配置 application.yml 文件** ~~~ spring: application: name: microservice-product-config ~~~ **3. 配置启动类** ~~~ @EnableEurekaClient @MapperScan("com.tuna.springcloud.server.mapper") @SpringBootApplication public class ProductProvider_8001 { public static void main(String[] args) { SpringApplication.run(ProductProvider_8001.class, args); } } ~~~ **7. 功能测试** * [ ] 先启动 Config 配置中心 * [ ] 再启动 Eureka 注册中心 * [ ] 再启动 商品提供者 * [ ] 访问:http://localhost:8001/product/get/1 * [ ] 根据 bootstrap.yml 文件中的 profile: dev,所以查询结果中显示的库名为 springcloud\_db01 ![](https://img.kancloud.cn/8f/f6/8ff60112ce14769e500f91a0239b41e7_508x146.png)