第一步:引入jar包
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
Springcloud2022之后还要引入一个bootstrap的依赖。
第二步:在resources下创建一个bootstrap.yml文档
bootstrap.yml中就不再指定项目名称了
spring:
cloud:
nacos:
config:
server‐addr: 127.0.0.1:8848
第三步: 在nacos控制台新增加一个配置
注意:Data ID和项目名称相同才能读取到配置,Data ID也输入order-nacos
注意:这里file-extension默认是.properties的,如果nacos中指定的是其他格式,那么客户端file-extension一定要显式指定。
添加属性
user.name=xss
user.age=23
主启动类中加入:
@SpringBootApplication
@EnableFeignClients
public class OrderNacosConfigApplication {
public static void main(String[] args) throws InterruptedException {
ConfigurableApplicationContext run = SpringApplication.run(OrderNacosConfigApplication.class, args);
while(true){
String name = run.getEnvironment().getProperty("user.name");
String age = run.getEnvironment().getProperty("user.age");
System.out.println(name+" "+age);
TimeUnit.SECONDS.sleep(5);
}
}
}
-----------------------------------------------------------------------------------------------------------------------------
关于配置:
看看具体的设置:
bootstrap.yml是和配置中心有关的内容
比如:配置中心的地址,核心配置文件的扩展名等等。
bootstrap.yml的内容如下:
spring:
cloud:
nacos:
config:
server‐addr: 127.0.0.1:8848
file-extension: yaml
namespace: dev
group: DEVELOP_GROUP
其中,file-extension默认是properties,但是如果nacos控制台中使用的是yaml,那么在bootstrap.yml这里一定要配置file-extension: yaml
注意:其中的file-extension: yaml只针对的是默认配置文件和profile文件
定制关于profile的配置:
制定开发环境的配置文件 application.yml
server:
port: 8086
spring:
application:
name: order-nacos
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
username: nacos
password: nacos
profiles:
active: dev
这里指定了 profiles.active=dev ,那么我们一定要在nacos配置中心创建一个DataId为 ${默认的配置文件名}-${环境标识}.${扩展后缀名} 的文件,此处后缀名必须写
这里的后缀名一定要写,而且后缀名和file-extension一致,例如客户端配置的如果是:file-extension: yaml,那么profile文件的命名一定是:order-nacos-dev.yaml
如果想引入多个配置文件:加extension或shared
bootstrap.yml配置如下:
注意:这里的扩展配置文件可以是properties结尾,也可以是yaml结尾的,不受 file-extension: yaml限制。
spring:
cloud:
nacos:
config:
server‐addr: 127.0.0.1:8848
file-extension: yaml
namespace: dev
group: DEVELOP_GROUP
shared-configs:
- data-id: common.properties
group: DEFAULT_GROUP
extension-configs[0]:
data-id: common02.properties
group: DEFAULT_GROUP
配置文件读取的优先级:
profile>默认>extension>shared
namespace是更高级的隔离,group是更普通的隔离。
通过@Value获得配置文件里的值:也想实时更新,在类上加上@RefreshScope
当使用@RefreshScope的时候,有个和定时任务相关的坑:定时任务在配置被修改了之后不好使了,这时候该类集成ApplicationListener<RefreshScope...>的一个接口,在重写的方法中重新调用定时任务就可了。