Nacos用来做服务注册中心以及配置中心,相当于Spring Cloud的Eureka(已停止维护)或者Zookeeper(没有控制台,不方便查阅注册服务)抑或Consul(某种原因,不建议使用)服务注册中心,以及Spring Cloud Confi或携程开源的Apollo配置中心二者的结合版。
Nacos安装搭建省略,自行查看官网文档!安装启动后,访问地址http://127.0.0.1:8848/nacos,账号密码均默认为nacos
版本注意:
孵化版本(groupId为org.springframework.cloud):
spring-cloud-alibaba-dependencies版本0.9.0:与Spring Cloud Greenwich兼容
spring-cloud-alibaba-dependencies版本0.2.2:与Spring Cloud Finchley兼容
且若想支持动态刷新配置,Spring Boot必须引用2.0.X版本系列的,大于或者等于2.1.X版本的暂时不支持动态刷新配置!
毕业版本(groupId为com.alibaba.cloud,目前基本用这个了):
spring-cloud-alibaba-dependencies版本2.1.0.RELEASE:与Spring Cloud Greenwich兼容
spring-cloud-alibaba-dependencies版本2.2.0.RELEASE:与Spring Cloud Hoxton兼容
(一)创建一个maven父工程,引入spring-cloud以及spring-cloud-alibaba版本依赖
org.springframework.boot
spring-boot-starter-parent
2.3.0.RELEASE
org.projectlombok
lombok
1.18.10
provided
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.cloud
spring-cloud-dependencies
Hoxton.SR4
pom
import
com.alibaba
fastjson
1.2.62
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.1.0.RELEASE
pom
import
(二)创建modules子工程
启动类:
@SpringBootApplication
public class NacosApplication {
public static void main(String[] args) {
SpringApplication.run(NacosApplication.class, args);
}
}
测试类:
假如需要支持配置动态刷新,得添加注解@RefreshScope
这里的配置动态刷新,指的是启动服务后,修改Nacos控制台的远程配置文件,相应地服务会读取最新的配置,但是修改端口号且不重启服务的情况下并不会改变服务的访问端口。
@RefreshScope
@RestController
public class TestController {
@Value("${name}")
private String name;
@RequestMapping(value = "/test", method = GET)
public String test(){
return name;
}
}
配置文件(以下二选一即可,必须配置spring.application.name属性):
## 用本地配置
server:
port: 9777 # 启动端口
spring:
application:
name: nacos-config
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # 配置中心地址
#profiles:
# active: dev # 根据不同环境切换配置环境
spring:
application:
name: nacos-config
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # 配置中心地址
file-extension: yml # 假如不配置,则nacos远程配置文件的后缀为.properties
(三)测试(选择第二种bootstrap.yml配置文件的前提下)
选择第二种bootstrap.yml配置文件,则需登录nacos控制台添加配置文件:
说明(摘自nacos官网):之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项
spring.cloud.nacos.config.prefix来配置。
spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当
spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成
${prefix}.${file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项
spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml,默认是properties
类型。
然后修改Nacos控制台的远程配置文件:
点击确认发布后,在idea控制台可以看到输出信息,显示对name属性刷新了:
再次访问,结果为:
说明动态刷新配置成功!!!
2020.06.26对依赖版本修改