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

SpringBoot引入Nacos并实现自动化注册+远程配置获取

  • 1. 环境准备
  • 2. 创建项目
  • 3. 添加依赖
  • 4. 项目配置
  • 5. 创建配置源
  • 6. 创建配置类NacosConfig
  • 7. Nacos测试接口NacosApi
  • 8. 测试
  • 9. 异常解决
    • 无法获取远程配置参数
  • 10. 总结

1. 环境准备

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

2. 创建项目

创建一个springboot项目。

我的项目地址:SpringBoot学习-Nacos
Nacos基础教程(三)--------SpringBoot引入Nacos并实现自动化注册+远程配置获取_第1张图片

3. 添加依赖



<dependency>
    <groupId>com.alibaba.bootgroupId>
    <artifactId>nacos-config-spring-boot-starterartifactId>
    <version>0.2.3version>
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服务里新增一个配置,这里我们新增的配置内容如下
Nacos基础教程(三)--------SpringBoot引入Nacos并实现自动化注册+远程配置获取_第2张图片

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中进入服务列表,查看是否成功注册。
Nacos基础教程(三)--------SpringBoot引入Nacos并实现自动化注册+远程配置获取_第3张图片
访问接口获取远程配置数据
Nacos基础教程(三)--------SpringBoot引入Nacos并实现自动化注册+远程配置获取_第4张图片
访问接口获取实例信息

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

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

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

学习过程中如果遇到问题,可以关注我的公众号,与我在线交流
Nacos基础教程(三)--------SpringBoot引入Nacos并实现自动化注册+远程配置获取_第6张图片

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

往期好文:

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

MySQL优化之explain

Spring源码分析-MVC初始化

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

造轮子的艺术

源码阅读技巧

Java注解详解

教你自建SpringBoot服务器

更多文章请点击

你可能感兴趣的:(nocas,nacos)