欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

关于SpringBoot2.7.6连接nacos遇到的一些问题,

来源: javaer 分享于  点击 3581 次 点评:221

关于SpringBoot2.7.6连接nacos遇到的一些问题,


目录
  • SpringBoot2.7.6连接nacos的问题
    • 版本选择   
    • yml配置
  • springboot对nacos的使用
    • 一、启动nacos:
    • 二、配置固定的配置值
    • 三、springboot集成nacos
  • 总结

    SpringBoot2.7.6连接nacos的问题

    简述:

    我遇到的问题是版本不匹配的问题,经搜索查询得出如下结论,最终完成了对nacos的连接。

    需要注意的是,我是用springboot子模块进行了nacos连接,其中继承了父工程,关键配置是要对nacos进行修改。

    版本选择   

        <!-- 继承Spring boot工程 -->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.7.6</version>
        </parent>
     
        <!-- 此处选择的mysql版本为如下,依赖自己导入 -->
        <mysql.version>8.0.12</mysql.version>
     
        <!--SpringBoot2.4.x之后默认不加载bootstrap.yml文件,需要在pom里加上依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
        <!--nacos注册和配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

    yml配置

    spring:
      application:
        name: colleges-user
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.22.135:8848
            enabled: true
          config:
            server-addr: 192.168.22.135:8848
            file-extension: yaml
            # 因为springboot 2.4版本以后默认关闭加载bootstrap.yml,所以只能通过此方式连接到nacos config
            import: nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}
            enabled: true

    springboot对nacos的使用

    一、启动nacos:

    ① 使用docker安装nacos:

    docker pull nacos/nacos-server:2.0.3

    ② 启动容器(配置8848端口为nacos端口):

    docker run --name mynacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:2.0.3

    ③ 查看是否启动成功:

    docker ps

    以下代表启动成功:

    ④启动nacos:

    docker exec -it 76c9be91653a /bin/bash#其中76c9be91653a 为nacos的containerID

    没有关闭防火墙的可以选择性关闭防火墙:

    systemctl stop firewalld

    启动成功后,就可以在浏览器访问nacos了:

    地址: [服务器ip]:8848/nacos

    账号和密码都是nacos

    二、配置固定的配置值

    ① 首先在空间组新建命名空间:

    命名空间ID自动生成,复制下来之后yml配置文件中会用到

    ② 在配置管理的配置列表里面添加配置:

    其中,配置内容就是你想要配置的固定值,建议将固定的、不容易被更改的配置放到nacos里;

    比如将过期时间设置为1000

    三、springboot集成nacos

    ① 导入jar包:

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
                <version>2.2.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>2.2.6.RELEASE</version>
            </dependency>

    其中,nacos的版本需要和springboot版本对应,我用的是:

    <spring-boot.version>2.3.12.RELEASE</spring-boot.version>

    ② 新建一个bootstrap.yml配置文件,识别到nacos相关配置:

    spring:
      cloud:
        nacos:
          username: nacos
          password: nacos
          discovery:
            namespace: 6024d9fd-2b64-4660-b89b-2932f505527d  #我们在nacos中创建的空间名称
            group: dev   #nacos配置文件所选择的group
            server-addr: (服务器ip):8848  #nacos服务地址
          config:
            namespace: 6024d9fd-2b64-4660-b89b-2932f505527d   #我们在nacos中创建的空间名称
            timeout: 3000
            auto-refresh: true  #修改后自动加载
            group: dev   #nacos配置文件所选择的group
            file-extension: yaml  #读取nacos配置文件后缀
            enable-remote-sync-config: true
            refresh-enabled: true
            server-addr: (服务器ip):8848  #nacos服务地址

    ③启动类上加上 @EnableDiscoveryClient 注解

    使用时: 直接将已经在nacos里配置好的值添加到value注解里即可,像这样:

    @Value("${key}")
    private Integer key;

    这样就可以直接获取到111了。

    注意需要在使用到这个key的nacos的类上面加上 @RefreshScope 这个注解,如果在nacos配置中刷新了key的值,就可以不用重新启动springboot也能获取到。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

    您可能感兴趣的文章:
    • Springboot升级到2.7.2结合nacos遇到的坑及解决
    • SpringBoot实现连接nacos并支持多环境部署
    • springboot项目连接不上nacos配置,报‘url‘异常问题
    • SpringBoot从Nacos读取MySQL数据库配置错误:Public Key Retrieval is not allowed的解决方案
    • springboot3如何接入nacos
    • Springboot整合nacos报错无法连接nacos的解决
    相关栏目:

    用户点评