nacos的安装和启动这边不再赘述,之前的文章中也有写到过.这里直接以nacos运行起来为基础
1.创建命名空间
因为我们开发的时候会有不同的环境,为了分类明确,好管理,这里先暂时创建平时常用的几个命名空间
dev,test,prod 然后手动的指定其命名空间的ID,不指定的话会生成一串类似UUID的字符串,不好分辨
我创建好的命名空间如下:
2.填写配置文件, 根据环境,选择对应的命名空间,创建对应的配置文件
Data ID : {spring.application.name}-{spring.profiles.active}.yaml
Group :默认
配置内容 就和我们在程序中使用yml 一样, 这里没有yml,只有yaml,这两个一个意思,比如添加了一个name属性,如下:
填写好了之后,点击发布
其他的命名空间同上
3.程序中使用
springboot 版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
pom需要的关键依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
bootstrap.yml:
spring:
application:
name: web
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos的地址
config:
file-extension: yaml #文件扩展名 对应yaml
server-addr: 127.0.0.1:8848 #nacos的地址
namespace: test_config #指定命名空间
profiles:
active: test #激活哪一个配置文件
启动类:
@SpringBootApplication
@EnableDiscoveryClient
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
4.测试
启动web模块,然后通过postman 测试,web中提供一个测试方法,用来读取配置文件中的值
@RestController
@RefreshScope //加上这个注解,才能自动刷新值 如果以对象的形式封装属性,直接 将该注解放在对象上就行
public class TestConfig {
@Value("${name}")
private String name;
@GetMapping("getConfName")
public String getConfName() {
return name;
}
}
启动成功之后,调用该方法
接下来修改这个值
不需要重启项目,再次调用接口查询