springboot集成nacos

springboot集成nacos

  • 1.版本
  • [2. POM依赖](#2. POM依赖)
  • [3. nacos服务](#3. nacos服务)
    • [3.1 下载nacos压缩包](#3.1 下载nacos压缩包)
    • [3.2 启动nacos](#3.2 启动nacos)
  • [4. yaml配置](#4. yaml配置)
  • 5.Demo
    • [5.1 配置中心简单格式获取方式](#5.1 配置中心简单格式获取方式)
    • 普通方式还可以再启动类上添加注解完成
    • [5.2 获取json格式的demo](#5.2 获取json格式的demo)
    • [5.2 自动注册根据yaml配置](#5.2 自动注册根据yaml配置)

1.版本

nacos版本:2.3.2

springboot版本:2.1.3.RELEASE

2. POM依赖

c 复制代码
           <dependency>
                <groupId>com.alibaba.boot</groupId>
                <artifactId>nacos-discovery-spring-boot-starter</artifactId>
                <version>0.2.3</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.boot</groupId>
                <artifactId>nacos-config-spring-boot-starter</artifactId>
                <version>0.2.3</version>
            </dependency>

3. nacos服务

3.1 下载nacos压缩包

https://github.com/alibaba/nacos/releases

3.2 启动nacos

c 复制代码
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

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

bash startup.sh -m standalone

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

startup.cmd -m standalone

4. yaml配置

c 复制代码
nacos:
  discovery:
    server-addr: 127.0.0.1:8848
    enabled: true
    autoRegister: true

    # 指定本项目的注册地址和端口号 这里配置的数元数据
    register:
      metadata:
        gRPC-port: 19090

5.Demo

5.1 配置中心简单格式获取方式

c 复制代码
  @NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
    private boolean useLocalCache;

    @GetMapping("getNacos")
    public Result getNacos() throws NacosException {
        return ResultGenerator.getSuccessResult(useLocalCache);

    }

结果:

普通方式还可以再启动类上添加注解完成

c 复制代码
@NacosPropertySources(value = {
        @NacosPropertySource(dataId = "example", groupId = "TEST_GROUP", autoRefreshed = true),
        @NacosPropertySource(dataId = "example", autoRefreshed = true),
        @NacosPropertySource(dataId = "testList", autoRefreshed = true)

})

5.2 获取json格式的demo

c 复制代码
@Configuration
public class NacosConfig {

    @Value("${nacos.config.server-addr}")
    private String serverAdd;
    @Value("${nacos.config.namespace:}")
    private String namespace;

    @Bean
    public ConfigService configService() throws NacosException {
        final Properties properties = new Properties();
        //设置Nacos节点对应的IP地址
        properties.setProperty(PropertyKeyConst.SERVER_ADDR, serverAdd);
        //设置命名空间
        properties.setProperty(PropertyKeyConst.NAMESPACE, namespace);
        //如果开启了Nacos权限校验,设置用户名
//        properties.setProperty(PropertyKeyConst.USERNAME,"nacos");
//        properties.setProperty(PropertyKeyConst.PASSWORD,"nacos");
        //设置获取配置信息的轮询超时时间
        properties.setProperty(PropertyKeyConst.CONFIG_LONG_POLL_TIMEOUT, "3000");
        //设置获取配置信息失败后的重试次数
        properties.setProperty(PropertyKeyConst.CONFIG_RETRY_TIME, "5");
        //设置是否开启客户端主动拉取最新的配置信息
        properties.setProperty(PropertyKeyConst.MAX_RETRY, "5");
        //构造一个ConfigService实例
        ConfigService configService = NacosFactory.createConfigService(properties);
        return configService;

    }


}




@RestController
@RequestMapping("test")
@Slf4j
public class TestController {
   @Autowired
    private ConfigService configService;

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

    @GetMapping("getNacos")
    public Result getNacos() throws NacosException {
        String config = configService.getConfig("testjson", "DEFAULT_GROUP", 3000);
        getConfig();
        return ResultGenerator.getSuccessResult(useLocalCache);

    }
   }

结果:

5.2 自动注册根据yaml配置

复制代码
enabled: true
autoRegister: true

当然可以在启动类上添加注解

@EnableNacosDiscovery

相关推荐
海鸥-w12 分钟前
什么是AOP
java
全栈弄潮儿26 分钟前
Python实战第2期: 变量与数据类型
后端·python·agent
Cc.Y30 分钟前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
paopaokaka_luck44 分钟前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787051 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev1 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
Sarvartha1 小时前
Lambda 表达式和函数式接口
java·开发语言
计算机毕业设计杰瑞1 小时前
【计算机毕设精品】基于SpringBoot的一体化教务与学业质量管理系统的设计与实现,附源码_增删改查_java项目_可完美运行部署_网站项目
java·spring boot·课程设计
colinu1 小时前
C++ 异步任务与线程生命周期:`std::async`、`future`、`thread`、`jthread` 与协作式退出
java·jvm·c++
码事漫谈1 小时前
五道题,测测你有没有真的入门 AI
后端