使用nacos作为配置中心,在非spring项目,直接使用nacos的 Java sdk也还是简单的。
要是套上Spring的情况下。这个例子就是Spring boot + nacos来实现配置中心。好多例子都是只一个dataId,我这带上dataId groupId namespace的设置。
<properties>
<nacos-config-spring-boot.version>0.2.1</nacos-config-spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${nacos-config-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-actuator</artifactId>
<version>${nacos-config-spring-boot.version}</version>
</dependency>
</dependencies>
application.properties 的内容,namespace在这儿设置
nacos.config.server-addr=192.168.1.191:8848
nacos.config.namespace=test
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
@SpringBootApplication
@NacosPropertySource(dataId = "lxk", groupId = "test", autoRefreshed = true)
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class, args);
}
}
主要类。设置类使用的是nacos server的哪个dataId和groupId,自动监听更新
@Controller
@RequestMapping("config")
public class ConfigController {
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache;
@NacosValue(value = "${name:lxk-test}", autoRefreshed = true)
private String name;
@NacosValue(value = "${age:18}", autoRefreshed = true)
private int age;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public String get() {
Map<String, Object> map = Maps.newHashMap();
map.put("useLocalCache", useLocalCache);
map.put("name", name);
map.put("age", age);
return JsonUtils.parseObjToFormatJson(map);
}
}
使用配置的类,类似Spring的@value注解,这地方换成了@NacosValue 。可以感知更新。当nacos server的配置修改变化之后,再次发布的时候,这个controller使用的值就变了。
实际测试的图
本次测试代码,放在github上了。有需要的可以看一下。
从截图上看,还有这么些个选项是可以配置的。