总结
1.jdk问题 jdk要一致
2.idea使用问题 idea启动nacos要配置,idea启动类要启动两次,并配置两次vm参数
3.项目依赖问题 依赖要正确添加,有的模块就是不能用公共模块的pom配置,需要独立配置,先后启动顺序也要注意变换
- properties文件内容 一定要给本地初始值,不能就启动不了;同时要和网站上配置的dataId对应,还有命名空间也要对应
流程简介:
- idea里打开nacos

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


根据需求进行填充,这里要和后面项目中的bootstrap.properties和controller对应,可直接照抄。
- 确定jdk 系统jdk idea项目jdk maven jdk 项目pom.xml jdk 都要一致,语言也一致
jdk 8,17 都可以,我用的17。
- 依赖添加: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>
- member模块 com.jiawa.train.member.controller包下,测试文件和配置文件添加:
- 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
- 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)网址:localhost:8001/member/hello
- 官网:
