转载自  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

添加依赖。
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-spring-context</artifactId>
    <version>${latest.version}</version>
</dependency>
最新版本可以在 maven 仓库,如 "mvnrepository.com" 中获取。

添加 @EnableNacosConfig 注解启用 Nacos Spring 的配置管理服务。以下示例中,我们使用 @NacosPropertySource 加载了 dataId 为 example 的配置源,并开启自动更新:
@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class NacosConfiguration {

}
通过 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;
    }
}
启动 Tomcat,调用 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"
再次访问 http://localhost:8080/config/get,此时返回内容为true,说明程序中的useLocalCache值已经被动态更新了。
启动服务发现
本节演示如何在您的 Spring 项目中启动 Nacos 的服务发现功能。完整示例代码请参考:nacos-spring-discovery-example

添加依赖。
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-spring-context</artifactId>
    <version>${latest.version}</version>
</dependency>
最新版本可以在 maven 仓库,如 "mvnrepository.com" 中获取。

通过添加 @EnableNacosDiscovery 注解开启 Nacos Spring 的服务发现功能:
@Configuration
@EnableNacosDiscovery(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
public class NacosConfiguration {

}
使用 @NacosInjected 注入 Nacos 的 NamingService 实例:
@Controller
@RequestMapping("discovery")
public class DiscoveryController {

@NacosInjected
    private NamingService namingService;

@RequestMapping(value = "/get", method = GET)
    @ResponseBody
    public List<Instance> get(@RequestParam String serviceName) throws NacosException {
        return namingService.getAllInstances(serviceName);
    }
}
启动 Tomcat,调用 curl http://localhost:8080/discovery/get?serviceName=example,此时返回为空 JSON 数组[]。

通过调用 Nacos Open API 向 Nacos server 注册一个名称为 example 服务。

curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8080'
再次访问 curl http://localhost:8080/discovery/get?serviceName=example,此时返回内容为:
[
  {
    "instanceId": "127.0.0.1#8080#DEFAULT#example",
    "ip": "127.0.0.1",
    "port": 8080,
    "weight": 1.0,
    "healthy": true,
    "cluster": {
      "serviceName": null,
      "name": "",
      "healthChecker": {
        "type": "TCP"
      },
      "defaultPort": 80,
      "defaultCheckPort": 80,
      "useIPPort4Check": true,
      "metadata": {}
    },
    "service": null,
    "metadata": {}
  }
]
相关项目
Nacos
Nacos Spring
Nacos Spring Boot
Spring Cloud Alibaba

Nacos(五)之Spring集成相关推荐

  1. RabbitMQ第五篇:Spring集成RabbitMQ

    前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq. 首先引入配置文件org.springframework.amqp,如下 <dependency>& ...

  2. SpringBoot 系列教程(八十五):Spring Boot使用MD5加盐验签Api接口之前后端分离架构设计

    加密算法参考: 浅谈常见的七种加密算法及实现 加密算法参考: 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 目的: 通过对API接口请求报文签名,后端进行验签处理, ...

  3. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  4. MyBitis(iBitis)系列随笔之六:mybitis与spring集成

    目前Spring官方还没有出整合Mybatis的特性,但是mybitis比较给力,开发了一个mybatis-spring插件,达到与Spring的完美整合目的. 在与Spring集成前,一方面我们需要 ...

  5. 使用CXF与Spring集成实现RESTFul WebService

    以下引用与网络中!!! 一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. ...

  6. Spring集成基础知识

    本文是我们名为" EAI的Spring集成 "的学院课程的一部分. 在本课程中,向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们. 接下来,您将深 ...

  7. Spring集成和Web服务

    本文是我们名为" Spring Integration for EAI "的学院课程的一部分. 在本课程中,向您介绍了企业应用程序集成模式以及Spring Integration如 ...

  8. MyBatis 3 – Spring集成教程

    作为本教程的第一步(带有MyBatis 3的Spring MVC 3 CRUD示例),我们将定义一个MyBatis服务,该服务将帮助我们在数据库上执行CRUD操作. 我们有一个用于User的域类和一个 ...

  9. (转)Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

    http://www.ityouknow.com/springboot/2017/09/23/spring-boot-jpa-thymeleaf-curd.html 这篇文章介绍如何使用 Jpa 和 ...

  10. Spring集成MyBatis

    将mybatis与spring进行整合,主要解决的问题就是讲SqlSessionFactory对象交由spring来管理,所以,该整合,只需要将SqlSessionFactory的对象生成器SqlSe ...

最新文章

  1. 重磅!《深度学习 500 问》已更新,GitHub 标星 2.6W(附完整下载)
  2. 一起谈.NET技术,在Mono 2.8上部署ASP.NET MVC 2
  3. YCSB benchmark测试mongodb性能——和web服务器测试性能结果类似
  4. Matlab学习笔记(三)
  5. BGP路由协议特性和三张表
  6. 测试软件测试赢在测试2:中国软件测试专家访谈录
  7. 某企业管理软件开发公司校园招聘的小组讨论面试题
  8. 查看 linux 硬件信息:内存、分区、系统、环境变量、防火墙、路由、端口监听、进程、CPU...
  9. UE4如何解析命令行参数
  10. 荣耀V30外观细节曝光:后置相机模组排布类似坚果Pro3
  11. java使用itext7生成pdf
  12. 达观智能制造知识图谱平台助力实现先进制造业“十四五”规划
  13. 金蝶套打文件放服务器还是本地,金蝶软件套打使用说明
  14. 网站打不开数据库错误等常见问题解决方法
  15. 华为云服务之公有云架构
  16. 计算机学院的师弟师妹们,请不要去餐馆打工了
  17. MySQL锁表了怎么办?
  18. 安卓6.0版本后出现的语音开启失败问题,错误码20006
  19. jenkin swindows启动_Windows环境下实现Jenkins自动化部署
  20. 创客基地oDrive第一课 入门配置

热门文章

  1. 计算机检测维修与数据恢复课件,2017年全国职业院校技能大赛中职组“计算机检测维修与数据恢复”赛项说明会ppt课件.ppt...
  2. [Java基础]List集合子类特点
  3. [剑指offer]面试题16:反转链表
  4. java文件损坏_java – 损坏的文件处理
  5. Redis存储优化--小对象压缩
  6. icoding复习3
  7. cell操作-matlab
  8. [蓝桥杯2017决赛]分考场、OpenJudge:分成互质数
  9. Codeforces Round #212 (Div. 2) C. Insertion Sort 思维
  10. CF1090F - How to Learn You Score(构造)