1. 项目搭建 1.1. 引入依赖 1 2 3 4 5 6 7 8 9 10 11 <dependency > <groupId > com.alibaba.nacos</groupId > <artifactId > nacos-spring-context</artifactId > <version > 0.2.2-RC1</version > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-test</artifactId > </dependency >
1.2. 启动类 启动类和普通的springboot启动类配置一样就行了
1 2 3 4 5 6 @SpringBootApplication public class NacosSampleSpringApp { public static void main (String[] args) { ConfigurableApplicationContext run = SpringApplication.run(NacosSampleSpringApp.class, args); } }
1.3. 配置中心 1.3.1. 配置类 1 2 3 4 5 6 7 8 9 10 11 @Configuration @EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848",namespace ="10e8ea4c-e9dc-42d9-a5e4-17aaba21a934" )) @NacosPropertySource( dataId = "kewen-data1", groupId = "DEFAULT_GROUP_KEWEN", autoRefreshed = true ) public class NacosConfigConfig {}
在spring中@EnableNacosConfig
是必须要加上的,没有springboot不会被加入@EnableNacosConfig
中未指定namespace即为默认的public ,需要指定时填入namspace的id,注意一定是id,填name无效
@NacosPropertySource
默认groupId为DEFAULT_GROUP,namespace与@EnableNacosConfig
保持一致
1.3.2. 使用类 使用的地方正常使用,和spirng的一致,前面已经分析过
1 2 3 4 5 6 7 8 9 10 11 12 @Service public class NacosSampleService { @NacosValue("${kewen.username}") private String value; public void helloValue () { System.out.println(value); } }
1.4. 服务发现(未拿到,咋回事) 根据官方来的,但是未拿到实例列表,暂时不知咋回事
地址
1.4.1. 服务发现配置类 1 2 3 4 5 @Configuration @EnableNacosDiscovery(globalProperties = @NacosProperties( serverAddr = "127.0.0.1:8848")) public class NacosDiscoveryConfig {}
1.4.2. 服务发现使用类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @RestController public class DiscoveryController { @NacosInjected private NamingService namingService; @GetMapping(value = "/getInstances") public List<Instance> get (@RequestParam String serviceName) throws NacosException { System.out.println("serviceName=" +serviceName); List<Instance> allInstances = namingService.getAllInstances(serviceName); System.out.println("allInstances= " +allInstances); return allInstances; } }
1.4.3. 测试使用
通过调用 Nacos Open API 向 Nacos server 注册一个名称为 example 服务。http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=kewen-test-discovery&ip=127.0.0.1&port=8080
查看是否注册上
调用本地接口获取实例列表localhost:8080/getInstances?serviceName=kewen-test-discovery
此处很奇怪,没有获取到值,注册服务用v2版本的又会报错,估计此处更新过,文档没有跟上
1.5. 配置管理 1.5.1. 配置管理配置类 1 2 3 4 @Configuration @EnableNacos(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848",namespace = "10e8ea4c-e9dc-42d9-a5e4-17aaba21a934")) public class NacosAllConfig {}
此处的@EnableNacos
会覆盖@EnableNacosDiscovery
和@EnableNacosConfig
的配置,而且配置了@EnableNacos
也不需要再配置其余两个
1.5.2. 配置管理使用 此处示例动态添加配置,当然也可以做其他的
1 2 3 4 5 6 7 @NacosInjected ConfigService configService; @Test public void testPublishConfig () throws NacosException { configService.publishConfig("kewen-app-dync" ,"DEFAULT_GROUP" , "kewen.username1=kewen" ); }
1.5.3. nacos服务器查看是否成功 成功状态
这样就展示了可以管理的配置
1.6. 监听器配置 两种方案,直接贴官方的,就不自己写代码了