集成nacos2.2.1出现的错误汇总

总结

1.jdk问题 jdk要一致

2.idea使用问题 idea启动nacos要配置,idea启动类要启动两次,并配置两次vm参数

3.项目依赖问题 依赖要正确添加,有的模块就是不能用公共模块的pom配置,需要独立配置,先后启动顺序也要注意变换

  1. properties文件内容 一定要给本地初始值,不能就启动不了;同时要和网站上配置的dataId对应,还有命名空间也要对应

流程简介:

  1. idea里打开nacos

2. 官网创建配置

打开官网 https://nacos.io 或者你自己的console网址,在启动标志右边会给出,直接ctrl+点击可进入网址。密码和用户都默认nacos,更改的话在nacos下载文件的appliaction,properties里可改。

根据需求进行填充,这里要和后面项目中的bootstrap.properties和controller对应,可直接照抄。

  1. 确定jdk 系统jdk idea项目jdk maven jdk 项目pom.xml jdk 都要一致,语言也一致

jdk 8,17 都可以,我用的17。

  1. 依赖添加:springboot版本为3.0.0,springcould 2022.0

父模块train新增依赖:

java 复制代码
          <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2022.0.0.0-RC1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

需要用到nacos的子模块member增加依赖:

java 复制代码
        <!-- 配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- 注册中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--SpringBoot 2.4版本之后 SpringCloud 2020,需要引入该依赖,才能读取bootstrap文件-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
  1. member模块 com.jiawa.train.member.controller包下,测试文件和配置文件添加:
  1. MemberApplication类 报错的话,执行mvn clean install,success就不会爆红了
java 复制代码
@SpringBootApplication
@ComponentScan("com.jiawa") //根据自己的包结构更改
@MapperScan("com.jiawa.train.*.mapper") //如果你没有生成mapper持久层包可以不要这个注解,根据自己的包结构更改
public class MemberApplication {


    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(BusinessApplication.class);

        //下面几行都可以去掉,是打印日志
        Environment env = app.run(args).getEnvironment();
        LOG.info("启动成功!!");
        LOG.info("测试地址: \thttp://127.0.0.1:{}{}/hello", env.getProperty("server.port"), env.getProperty("server.servlet.context-path"));

    }
}
java 复制代码
package com.jiawa.train.member.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController //必须加
@RefreshScope //实时更新可不加
public class TestController {

    @Value("${test.nacos}")
    private String testNacos;

    @GetMapping("/hello")
    public String hello() {
        return String.format("Hello %s!", testNacos);
    }
}

//这里定义方法为hello,参数为test.nacos 初始值是配置文件里的1
  1. resources下

application.properties文件:

java 复制代码
server.port=8001 //必须要,自己定义

test.nacos=1 //自定义,本地配置,必须给初始值,不然启动不了,如果读取不到远程也会拿这个值

-----------------------------------------------------------------------------------
server.servlet.context-path=/member //这个是配置了gateway模块转发需要,可以去掉

# 数据库连接 可以去掉这部分
spring.datasource.url=jdbc:mysql://localhost:3306/train_member?time_zone="+8:00"
spring.datasource.username=train_member
spring.datasource.password=member
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# mybatis xml路径 可以去掉
mybatis.mapper-locations=classpath:/mapper/**/*.xml
logging.level.com.jiawa.train.member=trace

bootstrap.properties文件:

java 复制代码
##下面三个值拼起来就是 页面上我们配置的dataId:member-dev.properties
spring.application.name=member
spring.profiles.active=dev
spring.cloud.nacos.config.file-extension=properties

## nacos 地址 127.0.0.1是本机默认地址,等效于localhost;8848是nacos默认端口
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

# nacos 命名空间 默认是public 这两行可以不写
spring.cloud.nacos.config.namespace=public
spring.cloud.nacos.discovery.namespace=public

3.启动项添加 VM参数,才能和nacos连接起来

第一次运行:

同一个地方,修改vm参数为 -Dspring.profiles.active=dev,再运行一次,每次修改了内容都要重新运行,(如果你配置了热部署,会启动,但是还是要手动刷新,才能正确运行拿到正确内容)

正确启动:出现127.0.0.1_8848才是成功,如果没有,就算没有报错,也是失败了,只会读取本地内容,不会读取远程的配置。

这里我的启动成功,但启动的是common模块,不是我想要的member模块,

原因是member还没有成功过,我就把member模块里的pom.xml新增内容放到common模块(这样所有模块都可以共用配置,member模块是已经引入了common模块的),同时添加了spring.application.name=common。

解决方法:在common模块pom里去掉新增配置,并去掉spring.application.name=common;在member模块里添加回新增配置,重新运行出现member再把pom配置,spring.application.name=common添加回去。

  1. 查看是否拿到远程,并是否有服务

1)网址:localhost:8001/member/hello

  1. 官网:
相关推荐
惊讶的猫16 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言
jmxwzy16 小时前
Spring全家桶
java·spring·rpc
Halo_tjn16 小时前
基于封装的专项 知识点
java·前端·python·算法
Fleshy数模17 小时前
从数据获取到突破限制:Python爬虫进阶实战全攻略
java·开发语言
像少年啦飞驰点、17 小时前
零基础入门 Spring Boot:从“Hello World”到可上线的 Web 应用全闭环指南
java·spring boot·web开发·编程入门·后端开发
苍煜17 小时前
万字详解Maven打包策略:从基础插件到多模块实战
java·maven
有来技术17 小时前
Spring Boot 4 + Vue3 企业级多租户 SaaS:从共享 Schema 架构到商业化套餐设计
java·vue.js·spring boot·后端
东东51617 小时前
xxx医患档案管理系统
java·spring boot·vue·毕业设计·智慧城市
东东51618 小时前
学院个人信息管理系统 (springboot+vue)
vue.js·spring boot·后端·个人开发·毕设
一个响当当的名号18 小时前
lectrue9 索引并发控制
java·开发语言·数据库