概述
多个微服务的配置之间有可能存在重复,重复的部分称为公共配置,我们可以把这些公共配置存储在Nacos中,各个微服务根据自己的需求加载对应的配置
这样做的好处是:方便管理,只需要修改公共配置即可实现修改多个服务的配置
实现过程
前提
加载的配置文件必须在同一个命名空间内
添加配置
我在命名为dev的命名空间内创建了三个配置文件:mysql_dev.properties
、 server_dev.properties
和 nacos_config.properties
,内容如下:
mysql_dev.properties
1 2 3 4 5
| spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/db_secondhandtrade?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456
|
server_dev.properties
1 2 3
| server.port=8888 server.servlet.context-path=/ server.tomcat.uri-encoding=UTF-8
|
nacos_config.properties
1 2
| ledao.name=mary ledao.age=22
|
bootstrap.properties加载
bootstrap比application配置文件的优先级高,如果存在一样的配置,以bootstrap的为准,加载多配置使用数组的形式,项目的配置文件只需要配置Nacos的IP地址和端口号
、命名空间id
,其它的配置从Nacos中加载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| spring.application.name=nacos_config_test
spring.cloud.nacos.config.server-addr=121.41.211.106:8848
spring.cloud.nacos.config.namespace=e4f40c45-6d6d-44dc-8bea-645f5d727824
spring.cloud.nacos.config.extension-configs[0].dataId=mysql_dev.properties spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].dataId=server_dev.properties spring.cloud.nacos.config.extension-configs[1].group=DEFAULT_GROUP spring.cloud.nacos.config.extension-configs[1].refresh=true
spring.cloud.nacos.config.extension-configs[2].dataId=nacos_config.properties spring.cloud.nacos.config.extension-configs[2].group=DEFAULT_GROUP spring.cloud.nacos.config.extension-configs[2].refresh=true
|
控制层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| package com.ledao.controller;
import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.sql.DataSource;
@RefreshScope @RestController @RequestMapping("/nacos") public class NacosConfigController {
@Value("${ledao.name}") private String name;
@Value("${ledao.age}") private String age;
@Resource private DataSource dataSource;
@GetMapping("/getUserInfo") public String getUserInfo() throws Exception { return name + " : " + age + " , " + dataSource.getConnection(); } }
|
测试
浏览器地址栏输入:http://localhost:8888/nacos/getUserInfo ,看到下图说明已经成功加载三个配置文件