Nacos 融合 Spring,成为注册配置中心
Nacos 融合 Spring,成为注册配置中心
本文主要面向 Spring 的使用者,通过两个示例来介绍如何使用 Nacos 来实现分布式环境下的配置管理和服务发现。
关于 Nacos Spring 的详细文档请参看:nacos-spring-project。
- 通过 Nacos server 和 Nacos Spring 配置管理模块,实现配置的动态变更;
- 通过 Nacos server 和 Nacos Spring 服务发现模块,实现服务的注册与发现。
前提条件
您需要先下载 Nacos 并启动 Nacos server。操作步骤参见 Nacos 快速入门。
启动配置管理
启动了 Nacos server 后,您就可以参考以下示例代码,为您的 Spring 应用启动 Nacos 配置管理服务了。完整示例代码请参考:nacos-spring-config-example
- 添加依赖。
最新版本可以在 maven 仓库,如 “mvnrepository.com” 中。
- 添加 注解启用 Nacos Spring 的配置管理服务。以下示例中,我们使用 加载了 为 的配置源,并开启自动更新:
- 通过 Nacos 的 注解设置属性值。
-
启动 Tomcat,调用 尝试配置信息。由于此时还未发布过配置,所以返回内容是 。
-
通过调用 Nacos Open API 向 Nacos Server 发布配置:dataId 为,内容为
- 再次访问 ,此时返回内容为,说明程序中的值已经被动态更新了。
启动服务发现
本节演示如何在您的 Spring 项目中启动 Nacos 的服务发现功能。完整示例代码请参考:nacos-spring-discovery-example
- 添加依赖。
最新版本可以在 maven 仓库,如 “mvnrepository.com” 中。
- 通过添加 注解开启 Nacos Spring 的服务发现功能:
- 使用 注入 Nacos 的 实例:
-
启动 Tomcat,调用 ,此时返回为空 JSON 数组。
-
通过调用 Nacos Open API 向 Nacos server 注册一个名称为 服务。
- 再次访问 ,此时返回内容为:
Nacos Spring关键特性
下文将介绍 中的一些关键的特性:
- 注解驱动
- 依赖注入
- 外部化配置
- 事件驱动
1. 注解驱动
1.1. 启用 Nacos
是一个模块驱动的注解,它支持 Nacos Spring 的所有功能,包括服务发现和配置管理。它等于 加上 ,可以单独配置并在不同场景中使用。
1.2. 配置监听
假设在 Nacos 服务中有一个配置,其 是 “testDataId” 而 是默认组(”DEFAULT_GROUP”)。 现在,您可以使用 方法更改其内容:
然后您可以添加一个监听器,它将监听配置的变化。 您可以通过在 Spring Bean 中添加配置变更监听器方法来执行此操作:
下面的代码具有相同的效果:
另外, 支持更丰富的类型转换。
- 请参看: Simple Sample of
1.2.1. 类型
的类型转换包括内置和自定义实现。 默认情况下,内置类型转换基于 Spring ,这意味着它包好了大多数情况以及 Spring 框架更高级版本的丰富功能。
例如,前面示例中的内容 “9527” 也可以通过带 “int” 或 “Integer” 参数的方法进行监听::
当然, 为开发人员提供弹性扩展。 如果定义名为的Spring Bean,其类型为,则将忽略。 此外,您可以自定义接口的实现,以指定类型转换的侦听器方法:
类绑定在 属性上,如下:
- 请参看:Type Conversion Sample of
1.2.2. 超时时间
由于运行自定义的 可能需要一些时间,因此您可以在 属性中设置最大执行时间,以防止它阻塞其他侦听器:
Bean 的 总是为,不会改变。 因此,以下断言都将是 :
- 请参看:Timeout Sample of
1.3. 全局和自定义 Nacos 属性
是任何 , 或 中的必选属性,其类型为 。
将初始化为其他注解或组件的 “全局 Nacos 属性“,例如:。
换句话说,全局 Nacos 属性 定义全局和默认属性。它设置为具有最低优先级,并且也可以被覆盖。覆盖优先级如下表所示:
定义来自以下之一的自定义 Nacos 属性:
自定义的 Nacos 属性也由 配置。 不过,它们是可选的,用于在特殊情况下覆盖全局 Nacos 属性。 如果没有定义,Nacos 属性将尝试从 或 或 中查找属性。
1.4.
是全局和自定义 Nacos 属性的统一注解。 它充当Java 和 类之间的中介。 负责创建 或 实例。
的属性完全支持占位符,它的源是Spring 抽象中的各种 ,通常是Java System 和操作系统环境变量。 所有占位符的前缀都是 。 和 Nacos 属性的属性之间的映射如下所示:
请注意, 和 之间 的占位符存在一些差异:
这些 和 的占位符用于隔离不同的 Nacos 服务,在大多数情况下都是不必要的。默认情况下,将使用常规占位符。
2. 依赖注入
是一个核心注解,用于在Spring Beans 中注入 或 实例,并使这些实例可缓存。 这意味着如果它们的 相等,则实例将是相同的,无论属性是来自全局还是自定义的 Nacos 属性:
属性 使用 或 ,因为 属性的默认值是 “UTF-8″,因此 实例和由 注解的 实例是相同的。 和 也是如此。
值得注意的是,与 方法创建的 实例不同, 注解创建的 实例支持 Nacos Spring 事件。 例如,在增强的 调用 方法之后会有一个 。 有关更多详细信息,请参阅”事件驱动”部分。
- 请参看:Dependency Injection Sample
3. 外部化配置
外部化配置是 Spring Boot 引入的概念,它允许应用程序接收外部属性源以控制运行时行为。 Nacos Server 在应用程序外部运行单独的进程以维护应用程序配置。 提供了对象绑定,动态配置(自动刷新)等功能。
这里有 和 Spring Stack 之间的简单比较:
- 请参看:Auto-Refreshed Sample of
- 请参看:Sample of and
4. 事件驱动
Nacos 事件驱动 基于标准的 Spring Event / Listener 机制。 Spring 的 是所有 Nacos Spring 事件的抽象超类:
- 请参看:Event/Listener Sample
相关项目
- Nacos
- Nacos Spring
- Nacos Spring Boot
- Spring Cloud Alibaba
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/7772.html