nacos2.0案例(4)配置服务器应用
启动Nacos2.0服务
修改生产者微服务hhd-hplat-provider
添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
创建配置文件
bootstrap.yml
server:
port: 8081
spring:
application:
name: nacos-provider
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
profiles:
active: dev
#创建application-dev.yml
spring:
cloud: #nacos注册中心地址的配置法
nacos:
discovery:
server-addr: localhost:8848 # nacos 注册中心的地址
enabled: true # 关闭/启动nacos的注册中心功能
#ip: provider-xxx # 配置nacos的ip 地址
management:
endpoints:
web:
exposure:
include: "*"
girl:
name: happy
创建application-prod.yml
spring:
cloud: #nacos注册中心地址的配置法
nacos:
discovery:
server-addr: localhost:8848 # nacos 注册中心的地址
enabled: true # 关闭/启动nacos的注册中心功能
#ip: provider-xxx # 配置nacos的ip 地址
management:
endpoints:
web:
exposure:
include: "*"
girl:
name: alibaba
修改EchoController
增加@RefreshScope类注解
增加代码
@Value("${girl.name}")
private String userName ;
@GetMapping("/getname")
public ResponseEntity<String> getname(){
return ResponseEntity.ok("获取的配置信息为:"+userName) ;
}
启动主程序
访问http://127.0.0.1/getname
切换bootstrap.yml 中的spring.profiles.active 的值为dev和prod 可以看到显示的内容不同。
在nacos中创建配置文件
Data Id:nacos-provider-dev.yaml
group:DEFAULT_GROUP
配置格式:yaml
配置内容:
spring:
cloud: #nacos注册中心地址的配置法
nacos:
discovery:
server-addr: localhost:8848 # nacos 注册中心的地址
enabled: true # 关闭/启动nacos的注册中心功能
#ip: provider-xxx # 配置nacos的ip 地址
management:
endpoints:
web:
exposure:
include: "*"
girl:
name: alill
发布后,访问接口:http://127.0.0.1/getname
查看返回内容是否改变。
注意事项:
bootstrap.yml 中的spring.cloud.nacos.config.file-extension=yml时,需要在nacos 中的data Id的扩展名也是.yml
如果是yaml 时,需要在nacos 中的data Id的扩展名也是.yaml
否则获取不到值。
bootstrap.yml 中的spring.cloud.nacos.config.file-extension=为其他格式时,data ID 的扩展明年也要做相应的调整。
#配置文件名规则
dataId :格式如下 ${prefix} - ${spring.profiles.active} . ${file-extension}
prefix 默认为 spring.application.name 的值
spring.profiles.active 当前环境对应的 profile
file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。
group 默认DEFAULT_GROUP
当activeprofile 为空时直接填写 spring.application.name值即可 默认properties