Nacos基础教程(三)--------SpringBoot引入Nacos并实现自动化注册+远程配置获取

1. 环境准备

部署Nacos环境:https://blog.csdn.net/shouchenchuan5253/article/details/107587983

2. 创建项目

创建一个springboot项目。

我的项目地址:SpringBoot学习-Nacos
在这里插入图片描述

3. 添加依赖

<!-- 版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本 -->
<!-- 截至至20200725 版本0.2.3为较新版本 -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>0.2.3</version>
</dependency>

4. 项目配置

在application.yml文件中配置nacos服务地址及端口

server:
  port: 8088
  ip: 127.0.0.1

spring:
  application:
    name: nacos-service

# nacos配置内容
nacos:
  config:
    server-addr: 127.0.0.1:8848 # 配置 Nacos 配置 的地址
  discovery:
    server-addr: 127.0.0.1:8848 # 配置 Nacos 服务 的地址

5. 创建配置源

在这之前可以提前在nacos服务里新增一个配置,这里我们新增的配置内容如下
在这里插入图片描述

6. 创建配置类NacosConfig

import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;

/**
 * @author baldwin
 */
@Configuration
@NacosPropertySource(dataId = "TestConfig.yml",groupId = "yzstu", autoRefreshed = true) //加载 dataId 为 example 的配置源,并开启自动更新
public class NacosConfig {

    @Value("${server.port}")
    private int serverPort;

    @Value("${server.ip}")
    private String ip;

    @Value("${spring.application.name}")
    private String applicationName;

    @NacosInjected
    private NamingService namingService;

    /**
     * 开机自动注册服务
     * @throws NacosException
     */
    @PostConstruct
    public void registerInstance() throws NacosException {
        namingService.registerInstance(applicationName, ip, serverPort);
    }
}

7. Nacos测试接口NacosApi

import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping(("/api/nacos"))
@Api(value = "Nacos服务相关接口")
public class NacosApi {

    @NacosInjected
    private NamingService namingService;

    @NacosValue(value = "${site.ip:0.0.0.0}",autoRefreshed = true)
    private String siteIp;

    @NacosValue(value = "${site.name:null}",autoRefreshed = true)
    private String siteName;

    @ApiOperation(value = "获取网站信息")
    @GetMapping(value = "/getSiteInfo")
    public String getSiteInfo(){
        return "MySite:"+siteName + ",ip:"+siteIp;
    }

    @ApiOperation(value = "获取所有实例信息")
    @ApiImplicitParam(value = "serviceName",example = "nacos-service",required = true)
    @GetMapping(value = "/getServiceInfo")
    public List<Instance> getInstanceInfo(@RequestParam(value = "serviceName") String serviceName){
        try {
            return namingService.getAllInstances(serviceName) ;
        } catch (Exception e){
            e.printStackTrace();
        }
        return null ;
    }
}

8. 测试

启动项目,在nacos-UI中进入服务列表,查看是否成功注册。
在这里插入图片描述
访问接口获取远程配置数据
在这里插入图片描述
访问接口获取实例信息

到这里基本上就完成了服务注册了

9. 异常解决

无法获取远程配置参数

1.检查NacosPropertySource注解中的dataId和groupId是否与远程配置文件中一直

2.远程配置文件需要设置后缀

10. 总结

作为一个简单的服务注册流程,只要过程中细心一点,应该就没有什么大问题,主要注意的就是导包和注解的使用

项目地址:https://gitee.com/dikeywork/learn-springboot/tree/master/learn-nacos

系列文章地址:https://blog.csdn.net/shouchenchuan5253/category_10223260.html

学习过程中如果遇到问题,可以关注我的公众号,与我在线交流
在这里插入图片描述

我是Baldwin,一个25岁的程序员,致力于让学习变得更有趣,如果你也真正喜爱编程,真诚的希望与你交个朋友,一起在编程的海洋里徜徉!

往期好文:

用Python每天给女神发一句手机短信情话

MySQL优化之explain

Spring源码分析-MVC初始化

春风得意马蹄疾,一文看尽(JVM)虚拟机

造轮子的艺术

源码阅读技巧

Java注解详解

教你自建SpringBoot服务器

更多文章请点击

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值