目录
一、nacos的安装与配置
--- 有空再补充
二、nacos注册中心
2.1 对接步骤
pom文件引入nacos依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
添加启动配置
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: ee601b91-4269-4452-bd5f-5010e78b69d8
service: nacos_service
group: dev_nacos
register-enabled: true
启动工程,在nacos界面看到启动的服务
三、nacos配置中心
3.1 实验结果
先说结果,需要验证过程的可参看后面的代码和配置再次验证
- 1、nacos可同时加载多个配置,共享配置 spring.cloud.nacos.config.shared-configs 以数组的形式添加配置;
- 2、nacos配置生效的优先级。nacos加载的配置当中,由配置 spring.cloud.nacos.config.name 指定的配置为最高优先级,共享配置 spring.cloud.nacos.config.shared-configs 当中配置的的加载按照添加的顺序加载,即相同的配置项,顺序靠后的覆盖顺序靠前的。
- 3、nacos配置中心当中添加配置时的data id命名需与配置格式相对应。例如:配置格式选择yaml,那data id的命名结尾需要以 .yaml 结尾,否则将获取不到对应的配置。
3.2 对接步骤
引入nacos依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
添加启动配置
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: ee601b91-4269-4452-bd5f-5010e78b69d8
name: nacos_service
group: dev_nacos
file-extension: yaml
shared-configs:
- data-id: mysql.yaml
group: dev_nacos
refresh: true
- data-id: priority.yaml
group: dev_nacos
refresh: true
nacos配置内容
nacos_service.yaml:
service:
name: nacos_service_test
config:
priority: 1
mysql.yaml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:336/nacos?characterEncoding=utf8
username: root
password: 123456
config:
priority: 2
priority2: 2
priority.yaml
config:
priority: 3
priority2: 3
接口代码
ConfigController.java
@RestController
@RequestMapping("config")
@RefreshScope
public class ConfigController {
@Value(value = "${service.name}")
private String serviceName;
@Value(value = "${spring.datasource.url}")
private String dataSourceUrl;
@Value(value = "${spring.datasource.username}")
private String dataSourceUsername;
@Value(value = "${spring.datasource.password}")
private String dataSourcePassword;
@Value(value = "${config.priority}")
private Integer configPriority;
@Value(value = "${config.priority2}")
private Integer configPriority2;
@GetMapping(value = "/get",produces = "application/json")
public String get() {
return toString();
}
@Override
public String toString() {
return "{" +
"\"serviceName\": \"" + serviceName + '\"' +
", \"dataSourceUrl\": \"" + dataSourceUrl + '\"' +
", \"dataSourceUsername\": \"" + dataSourceUsername + '\"' +
", \"dataSourcePassword\": \"" + dataSourcePassword + '\"' +
", \"configPriority\": " + configPriority +
", \"configPriority2\": " + configPriority2 +
"}";
}
}
工程启动后,接口返回的结果
四、遇到的问题
4.1 版本不对应导致的问题
在添加了nacos的pom文件依赖后,工程启动如出现以下几种异常,通常是alibaba与spring cloud、springboot版本不对应导致的
版本对应关系可到官方git