小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
从三个方面深入源码:
- 服务注册
- 服务地址的获取
- 服务地址变化的感知
在Spring-Cloud-Common包中有一个类org.springframework.cloud.client.serviceregistry.ServiceRegistry,它是SpringCloud提供的服务注册的标准,集成到SpringCloud实现服务注册的组件,都会实现该接口。
1 | java复制代码public interface ServiceRegistry<R extends Registration>{ |
而这个接口的实现类是com.alibaba.cloud.nacos.registry.NacosServiceRegistry,它什么时候触发服务注册动作?
Spring Cloud集成Nacos的实现过程
在Spring-cloud-commons包的META-INF/spring.factories中包含自动装配信息如下:
1 | properties复制代码org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ |
SpringBoot集成Nacos实现统一配置管理
- 创建一个SpringBoot项目,并集成Nacos配置中心
- 添加Nacos Config maven依赖
1 | xml复制代码<dependency> |
在application.yml中添加Nacos Server的地址
1 | yml复制代码 nacos: |
创建NacosConfigController类,用于从Nacos Server动态读取配置
1 | java复制代码@NacosPropertySource(dataId = "server1",autoRefreshed = true) |
Nacos注解说明:
- @NacosPropertySource,用于加载dataId为server1的配置源,autoRefreshed标识开启自动更新
- @NacosValue:设置属性的值,其中info表示key,而Local代表默认值,如果key不存在,则使用默认值,是一种高可用的策略,在实际应用中,需要考虑在配置中心不可用下如何保证服务的可用性。
本文转载自: 掘金