侧边栏壁纸
博主头像
码森林博主等级

一起走进码森林,享受编程的乐趣,发现科技的魅力,创造智能的未来!

  • 累计撰写 146 篇文章
  • 累计创建 74 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Nacos(4):Spring Boot 集成 Nacos

码森林
2022-01-19 / 0 评论 / 0 点赞 / 794 阅读 / 3,039 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

本文主要介绍 Spring Boot 集成 Nacos 实现服务发现和统一配置管理。

Spring Boot 集成 Nacos 实现服务发现

1、创建项目spring-boot-nacos,添加maven依赖:

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-discovery-spring-boot-starter</artifactId>
    <version>0.2.10</version>
</dependency>				

注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。

2、在 application.properties 中配置 Nacos server 的地址:

nacos.discovery.server-addr=127.0.0.1:8848

3、创建 DiscoveryController,使用 @NacosInjected 注入 Nacos 的 NamingService 实例:

@RestController
public class DiscoveryController {

    @NacosInjected
    private NamingService namingService;

    @GetMapping("/discovery")
    public List<Instance> discovery(@RequestParam String serviceName) throws NacosException {
        return namingService.getAllInstances(serviceName);
    }
}

4、启动项目,访问 http://127.0.0.1:8080/discovery?serviceName=spring-boot-nacos,此时返回为空 JSON 数组[]

5、向 Nacos Server 注册服务:

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?port=8080&healthy=true&ip=127.0.0.1&weight=1.0&serviceName=spring-boot-nacos&encoding=GBK&namespaceId=public'

本文采用 Nacos 服务端版本为 2.0.3,如果是 1.x 的版本则采用以下方式,否则会“caused: service not found‘:

curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=spring-boot-nacos&ip=127.0.0.1&port=8080'

6、再次访问 http://127.0.0.1:8080/discovery?serviceName=spring-boot-nacos ,此时返回内容为:

[{
	"instanceId": "127.0.0.1#8080#DEFAULT#DEFAULT_GROUP@@spring-boot-nacos",
	"ip": "127.0.0.1",
	"port": 8080,
	"weight": 1.0,
	"healthy": true,
	"enabled": true,
	"ephemeral": true,
	"clusterName": "DEFAULT",
	"serviceName": "DEFAULT_GROUP@@spring-boot-nacos",
	"metadata": {},
	"instanceHeartBeatInterval": 5000,
	"instanceHeartBeatTimeOut": 15000,
	"ipDeleteTimeout": 30000,
	"instanceIdGenerator": "simple"
}]

Spring Boot 集成 Nacos 实现统一配置管理

1、添加maven依赖:

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>0.2.10</version>
</dependency>

2、在 application.properties 中配置 Nacos server 的地址:

nacos.discovery.server-addr=127.0.0.1:8848

3、使用 @NacosPropertySource 加载 dataId 为 spring-boot-nacos-config 的配置源,并开启自动更新:

@SpringBootApplication
@NacosPropertySource(dataId = "spring-boot-nacos-config", autoRefreshed = true)
public class NacosApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosApplication.class, args);
    }
}

4、通过 Nacos 的 @NacosValue 注解设置属性值:

@RestController
public class ConfigController {

    @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
    private boolean useLocalCache;

    @GetMapping("/config")
    public boolean config(){
        return useLocalCache;
    }
}

5、启动项目,访问 http://127.0.0.1:8080/config,此时内容为 false。

6、向 Nacos Server 发布配置:

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=spring-boot-nacos-config&group=DEFAULT_GROUP&content=useLocalCache=true"

7、再次访问 http://127.0.0.1:8080/config,此时内容为 true,说明 useLocalCache 配置已经被动态更新了。

示例源码

github

码云

0

评论区