总结
1.jdk问题 jdk要一致
2.idea使用问题 idea启动nacos要配置,idea启动类要启动两次,并配置两次vm参数
3.项目依赖问题 依赖要正确添加,有的模块就是不能用公共模块的pom配置,需要独立配置,先后启动顺序也要注意变换
4. properties文件内容 一定要给本地初始值,不能就启动不了;同时要和网站上配置的dataId对应,还有命名空间也要对应
流程简介:
1. idea里打开nacos
2. 官网创建配置
打开官网 https://nacos.io 或者你自己的console网址,在启动标志右边会给出,直接ctrl+点击可进入网址。密码和用户都默认nacos,更改的话在nacos下载文件的appliaction,properties里可改。
根据需求进行填充,这里要和后面项目中的bootstrap.properties和controller对应,可直接照抄。
3. 确定jdk 系统jdk idea项目jdk maven jdk 项目pom.xml jdk 都要一致,语言也一致
jdk 8,17 都可以,我用的17。
4. 依赖添加:springboot版本为3.0.0,springcould 2022.0
父模块train新增依赖:
<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增加依赖:
<!-- 配置中心 --><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>
5. member模块 com.jiawa.train.member.controller包下,测试文件和配置文件添加:
1) MemberApplication类 报错的话,执行mvn clean install,success就不会爆红了
@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"));}
}
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
2) resources下
application.properties文件:
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文件:
##下面三个值拼起来就是 页面上我们配置的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添加回去。
3. 查看是否拿到远程,并是否有服务
1)网址:localhost:8001/member/hello
2) 官网: