SpringBoot 整合 Nacos服务配置与服务自动注册

1.下载安装nacos

中文官网
https://nacos.io/zh-cn/
中文文档
https://nacos.io/zh-cn/docs/quick-start.html

从 最新稳定版本(https://github.com/alibaba/nacos/releases) 下载 nacos-server-$version.zip 包或nacos-server-$version.tar.gz 。

或者在这里下载:nacos-server-1.4.1,2.0.1,2.0.3,2.0.4-Java文档类资源-CSDN下载

  unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
  cd nacos/bin

Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

在浏览器中输入http://localhost:8848/nacos就可以访问了,默认的用户名和密码都是nacos

拓展

ubuntu默认采用dash,导致sh运行报错
用命令 ls -l /bin/sh 
若结果是: /bin/sh -> dash
我们会发现Ubuntu默认采用的是 dash
如果要修改默认的sh,可以采用命令
sudo dpkg-reconfigure dash
然后选择【否】
成功后再执行ls -l /bin/sh 看看
结果是: /bin/sh -> bash
修改成功!
当然我们也可以使用
sudo dpkg-reconfigure dash
把sh修改回去

Windows

启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

在浏览器中输入http://localhost:8848/nacos就可以访问了,默认的用户名和密码都是nacos

2.springboot添加 Nacos依赖以及在properties配置Nacos

  (1).添加SpringBoot父级依赖

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.3.2.RELEASE</version>
</parent>

  (2).添加Nacos配置中心,注册中心依赖,记得控制好版本的选择

<properties>
	<!-- 版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本 -->
	<!-- nacos.config,nacos.discovery 如果要选用0.2.x最好大于0.2.2以上-->
	<nacos.config.version>0.2.7</nacos.config.version>
	<nacos.discovery.version>0.2.7</nacos.discovery.version>
	<springboot.version>2.3.2.RELEASE</springboot.version>
</properties>

<!-- nacos-config配置中心依赖 -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>${nacos.config.version}</version>
</dependency>
<!-- nacos-discovery注册中心依赖 -->
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-discovery-spring-boot-starter</artifactId>
    <version>${nacos.discovery.version}</version>
</dependency>

  (3).在application.properties中添加以下配置

# springApplicationName
spring.application.name=nacos-service
# 应用端口以及地址
server.port=8088
server.ip=127.0.0.1
# nacos配置中心地址
nacos.config.server-addr=127.0.0.1:8848
# nacos注册中心地址
nacos.discovery.server-addr=127.0.0.1:8848

3.springboot配置nacos 服务配置与服务自动注册

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;

@Configuration
@NacosPropertySource(dataId = "nacos-springboot-service", autoRefreshed = true)
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);
    }
}

(1).在@NacosPropertySource注解中配置服务,配置多个服务可以使用’@NacosPropertySources
  如:@NacosPropertySources({
      @NacosPropertySource(dataId = "nacos.springboot.service",  groupId = "springboot", autoRefreshed = true),
      @NacosPropertySource(dataId = "nacos.springboot.service.pre",  groupId = "springboot", autoRefreshed = true),
      @NacosPropertySource(dataId = "nacos.springboot.service.test",  groupId = "springboot", autoRefreshed = true),
      @NacosPropertySource(dataId = "nacos.springboot.service.test",  groupId = "springboot", autoRefreshed = true)
      })
(2).在registerInstance()方法中进行服务注册

4.写nacos api 测试接口

@RestController
@RequestMapping("/api/nacos/")
class NacosController {

    @NacosValue(value = "${service.name:1}", autoRefreshed = true)
    private String serverName;

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    public void setUseLocalCache(boolean useLocalCache) {
        this.useLocalCache = useLocalCache;
    }

    @RequestMapping(value = "/getLocalCache", method = GET)
    public boolean getLocalCache() {
        return useLocalCache;
    }

    @RequestMapping(value = "/getServerName", method = GET)
    public String getServerName() {
        return serverName;
    }


    @NacosInjected
    private NamingService namingService;

    /**
     * 根据服务名称获取实例数
     */
    @RequestMapping(value = "/getServiceInfo", method = GET)
    public List<Instance> getServiceInfo(@RequestParam String serviceName) throws NacosException {
        return namingService.getAllInstances(serviceName);
    }
}

1.getLocalCache
2.getServerName 获取服务配置名称
3.getServiceInfo 根据应用名称springApplicationName获取实例信息

成功启动应用后的访问示例:

http://localhost:8088/api/nacos/getServiceInfo?serviceName=nacos-service


 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值