前提条件
您需要先下载 Nacos 并启动 Nacos server。
启动好了,默认端口是8848,启动好了访问localhost:8848
启动配置管理
启动了 Nacos server 后,您就可以参考以下示例代码,为您的 Spring Boot 应用启动 Nacos 配置管理服务了。
- 添加依赖。
<!--核心依赖-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
</dependency>
总的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-boot-starter -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.7</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
</dependencies>
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
- 在
application.properties
中配置 Nacos server 的地址:
nacos.config.server-addr=127.0.0.1:8848
- 当然也可以使用yml作为配置文件,如果使用yml作为配置文件时,配置如下:
nacos:
config:
server-addr: http://localhost:8848
- 使用
@NacosPropertySource
加载dataId
为example
的配置源,并开启自动更新:
@SpringBootApplication
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class, args);
}
}
代码说明
@NacosPropertySource(dataId = "example", autoRefreshed = true)
这句话相当于使用Nacos的配置文件导入功能,这句话相当于导入nacos默认空间下面的dataId=example
图文:
- 通过 Nacos 的
@NacosValue
注解设置属性值。
@Controller
@RequestMapping("config")
public class ConfigController {
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public boolean get() {
return useLocalCache;
}
}
代码说明:
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
#autoRefreshed注解属性true表示支持自动刷新
--自动刷新就是如果你在nacos配置里面把值改了,项目下次获取属性的时候,自动刷新刷新值。
这个相当于spring @Value注解,给属性注入值
${}表达式
useLocalCache 属性
useLocalCache:false 表示读取属性useLocalCache,如果没读到,默认值设置为false
- 启动
NacosConfigApplication
,调用curl http://localhost:8080/config/get
,返回内容是false
。 -
通过调用 Nacos Open API 向 Nacos server 发布配置:dataId 为
example
,内容为useLocalCache=true
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&group=DEFAULT_GROUP&content=useLocalCache=true"
或者直接通过nacos控制台的方式,新建dataId为example的文件,然后设置属性和值;
- 再次访问
http://localhost:8080/config/get
,此时返回内容为true
,说明程序中的useLocalCache
值已经被动态更新了。
这个是基于springboot版本的
如何给某个实体设置属性值呢?
@Data
@Component
@NacosConfigurationProperties(dataId = "promotion.properties", groupId = "DEFAULT_GROUP", autoRefreshed = true)
public class WxProperties {
/**
* appID
*/
private String appId;
/**
* secret
*/
private String appSecret;
/**
* 登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。
*/
private String authCode2SessionUrlPath;
/**
*
*/
private String accessTokenUrlPath;
}
使用注解@NacosConfigurationProperties类完成,功能可以理解为跟spring的@ConfigurationProperties差不多