先容
之前Spring Cloud Config基础篇这篇文章先容了Spring Cloud Config 设置中心基础的实现,本日继续聊下Spring Cloud Config 并联合nacos做服务注册中心,实现多项目、多设置文件、按项目目录分别等功能的设置服务中心。 
阅读本篇文章之前,最好要有nacos基础;关于nacos是什么,如何使用,可以参考我的上一篇文章 Spring Cloud Alibaba(一) 如何使用nacos服务注册和发现,大概直接链接到官网教程Nacos 快速开始 
本示例紧张内容
- 采用nacos做服务注册中心,Spring Cloud Config做设置服务中心,在上一篇基础上新建了ali-nacos-config-server设置服务中心项目、ali-nacos-config-client设置客户端项目、并把ali-nacos-consumer-feign设置也调整成从设置中心加载设置
 
- 支持多项目,config-repo设置文件目录按项目名称来规划,在设置中心 searchPaths: /cloud-alibaba/config-repo/{application}/ 使用application自动辨认查找目录
 
- 支持单项目多设置文件,ali-nacos-config-client项目的设置文件 spring.cloud.config.name=${spring.application.name},myconfig,通过指定多个name实现多设置文件
 
 
实现示例过程
新建ali-nacos-config-server项目
该项目用来做设置服务中心,以下贴出关键部分代码 
pom.xml - <code>    <dependencies>
 -         <dependency>
 -             <groupId>org.springframework.boot</groupId>
 -             <artifactId>spring-boot-starter-web</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.cloud</groupId>
 -             <artifactId>spring-cloud-config-server</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>com.alibaba.cloud</groupId>
 -             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.boot</groupId>
 -             <artifactId>spring-boot-starter-test</artifactId>
 -             <scope>test</scope>
 -         </dependency>
 -     </dependencies></code>
 
  复制代码application.yml - <code>server:
 -   port: 8001
 - spring:
 -   application:
 -     name: ali-nacos-config-server
 -   cloud:
 -     nacos:
 -       discovery:
 -         server-addr: localhost:8848
 -     config:
 -       server:
 -         git:
 -           #uri: https://github.com/smltq/spring-boot-demo.git
 -           uri: https://gitee.com/tqlin/spring-boot-demo.git
 -           searchPaths: /cloud-alibaba/config-repo/{application}/
 -           force-pull: true</code>
 
  复制代码启动类AnConfigServerApplication.java - <code>@SpringBootApplication
 - @EnableDiscoveryClient
 - @EnableConfigServer
 - public class AnConfigServerApplication {
 -     public static void main(String[] args) {
 -         SpringApplication.run(AnConfigServerApplication.class, args);
 -     }
 - }</code>
 
  复制代码新建ali-nacos-config-client项目
该项目用来做设置中心客户端测试之一,以下贴出几处关键代码 
pom.xml - <code>    <dependencies>
 -         <dependency>
 -             <groupId>org.springframework.boot</groupId>
 -             <artifactId>spring-boot-starter-web</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>com.alibaba.cloud</groupId>
 -             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.cloud</groupId>
 -             <artifactId>spring-cloud-starter-config</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.boot</groupId>
 -             <artifactId>spring-boot-starter-actuator</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.cloud</groupId>
 -             <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
 -         </dependency>
 -     </dependencies></code>
 
  复制代码bootstrap.yml - <code>spring:
 -   application:
 -     name: ali-nacos-config-client
 -   cloud:
 -     nacos:
 -       discovery:
 -         server-addr: localhost:8848
 -     config:
 -       name: ${spring.application.name},myconfig
 -       uri: http://localhost:8001/ # config server 设置服务地址
 -       profile: ${spring.profiles.active}
 -       label: master
 -   profiles:
 -     active: pro                  # 设置文件版本(该示例分为test,dev,pro)</code>
 
  复制代码写个设置读取测试类HelloController.java - <code>@RestController
 - public class HelloController {
 -     @Value("${easy.hello}")
 -     private String hello;
 -     @Value("${easy.myconfig}")
 -     private String myconfig;
 -     @RequestMapping("/hello")
 -     public Map hello() {
 -         Map map = new HashMap<>();
 -         map.put("hello", hello);
 -         map.put("myconfig", myconfig);
 -         return map;
 -     }
 - }</code>
 
  复制代码启动类AnConfigClientApplication.java - <code>@SpringBootApplication
 - @EnableDiscoveryClient
 - public class AnConfigClientApplication {
 -     public static void main(String[] args) {
 -         SpringApplication.run(AnConfigClientApplication.class, args);
 -     }
 - }</code>
 
  复制代码调整ali-nacos-consumer-feign项目
以下贴出调整部分代码 
pom.xml增加spring-cloud-starter-config依赖 - <code>    <dependencies>
 -         <dependency>
 -             <groupId>org.springframework.cloud</groupId>
 -             <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.cloud</groupId>
 -             <artifactId>spring-cloud-starter-openfeign</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.boot</groupId>
 -             <artifactId>spring-boot-starter-web</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>com.alibaba.cloud</groupId>
 -             <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.boot</groupId>
 -             <artifactId>spring-boot-starter-actuator</artifactId>
 -         </dependency>
 -         <dependency>
 -             <groupId>org.springframework.cloud</groupId>
 -             <artifactId>spring-cloud-starter-config</artifactId>
 -         </dependency>
 -     </dependencies></code>
 
  复制代码yml设置文件增加bootstrap.yml,把核心设置移到该设置文件 
bootstrap.yml - <code>spring:
 -   application:
 -     name: ali-nacos-consumer-feign
 -   cloud:
 -     nacos:
 -       discovery:
 -         server-addr: localhost:8848
 -     config:
 -       name: ${spring.application.name}
 -       uri: http://localhost:8001/ # config server 设置服务地址
 -       profile: ${spring.profiles.active}
 -       label: master
 -   profiles:
 -     active: dev                  # 设置文件版本(该示例分为test,dev,pro)</code>
 
  复制代码编写设置读写测试类HomeController.java - <code>@RestController
 - @Slf4j
 - public class HomeController {
 -     @Autowired
 -     private HelloService helloService;
 -     @Value("${easy.hello}")
 -     private String hello;
 -     @GetMapping(value = "/", produces = "application/json")
 -     public String home() {
 -         log.info("-----------------consumer调用开始-----------------");
 -         String param = "云天";
 -         log.info("斲丧者通报参数:" + param);
 -         String result = helloService.hello(param);
 -         log.info("收到提供者相应:" + result);
 -         return "feign斲丧者" + result;
 -     }
 -     @RequestMapping("/hello")
 -     public Map hello() {
 -         Map map = new HashMap<>();
 -         map.put("hello", hello);
 -         return map;
 -     }
 - }</code>
 
  复制代码末了放上设置文件目录规划
config-repo设置总目录 
ali-nacos-config-server 项目GIT的设置目录 
ali-nacos-consumer-feign 项目GIT的设置目录 
使用示例
在上一篇基础上,我们新建了2个项目,并调整ali-nacos-consumer-feign项目使它支持设置长途读取,有以下三个项目做测试。
ali-nacos-config-server:设置服务中心,服务名:ali-nacos-config-server,端口:8001 
ali-nacos-config-client:设置客户端1(斲丧端),服务名:ali-nacos-config-client,端口:8002 
ali-nacos-consumer-feign:设置客户端2(斲丧端),服务名:ali-nacos-consumer-feign,端口:9101 
运行测试
起首要启动服务注册中心 nacos 
启动ali-nacos-config-server服务,设置服务中心测试
- 访问:http://localhost:8001/ali-nacos-config-client/dev ,返回:
 
 - <code>{
 -     name: "ali-nacos-config-client",
 -     profiles: [
 -     "dev"
 -     ],
 -     label: null,
 -     version: "5456d7ca31d46e91464b6efd3a0831a8208413d9",
 -     state: null,
 -     propertySources: [ ]
 - }</code>
 
  复制代码
- 访问:http://localhost:8001/ali-nacos-config-client/test ,返回:
 
 - <code>{
 -     name: "ali-nacos-config-client",
 -     profiles: [
 -     "test"
 -     ],
 -     label: null,
 -     version: "5456d7ca31d46e91464b6efd3a0831a8208413d9",
 -     state: null,
 -     propertySources: [ ]
 - }</code>
 
  复制代码这表示设置能正确从git上加载到了。 
启动ali-nacos-config-client服务,运行客户端测试1
- bootstrap.yml的active调成dev,访问:http://localhost:8002/hello ,返回:
 
 - <code>{
 -     hello: "ali-nacos-config-client 项目的 dev config",
 -     myconfig: "ali-nacos-config-client 项目的 myconfig config"
 - }</code>
 
  复制代码
- bootstrap.yml的active调成test,访问:http://localhost:8002/hello ,返回:
 
 - <code>{
 - hello: "ali-nacos-config-client 项目的 test config",
 - myconfig: "ali-nacos-config-client 项目的 myconfig config"
 - }</code>
 
  复制代码表示我git上该项目的2个设置文件都成功读取到了。 
启动ali-nacos-consumer-feign项目,测试客户端测试2
访问:http://localhost:9101/hello 
返回结果 - <code>{
 -   hello: "ali-nacos-consumer-feign 项目的 dev config"
 - }</code>
 
  复制代码表示该项目的设置文件加载成功了 
资料
- Spring Cloud Alibaba 示例源码
 
- 原文地址
 
 
 
 
 
 
  来源:https://www.cnblogs.com/tqlin/p/11725487.html |