进学阁

业精于勤荒于嬉,行成于思毁于随

0%

springcloud项目使用nacos

参考资料:

Nacos 融合 Spring Cloud:

https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html

Java SDK:

https://nacos.io/zh-cn/docs/v2/guide/user/sdk.html

POM文件引用:

父pom

springcloud,springboot,springcloudalibaba,nacos版本引用

1
2
3
4
5
6
7
8
9
<properties>
<java.version>11</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
<spring-cloud.version>2021.0.5</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
<alibaba.nacos.version>2.1.1</alibaba.nacos.version>
</properties>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<dependencyManagement>
<dependencies>
<!--统一版本-->
<dependency>
<groupId>com.luck.sugar</groupId>
<artifactId>luck-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringBoot 依赖配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud 微服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Alibaba Nacos 配置 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${alibaba.nacos.version}</version>
</dependency>
<!-- Mybatis 依赖配置 -->

<!-- SpringCloud Alibaba 微服务 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

因为我们使用了注册中心所以配置不能再使用application.yaml,需要优先级更高的bootstrap文件来找到nacos的配置文件,在springboot2.2以后bootstrap默认是关闭的需要打开才能默认使用bootstrap文件为配置文件,需要在pom文件中添加模块引用

1
2
3
4
5
6
7
<dependencies>
<!-- bootstrap 启动器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
</dependencies>

子pom

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<dependencies>
<!-- spring web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!--nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>

配置文件修改:

上节解释了配置文件变化,以下是bootstrap.yml的示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Tomcat
server:
port: 1066

# Spring
spring:
application:
# 应用名称
name: luck-uid
profiles:
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 49.235.122.65:8848
namespace: 5e81acf8-7ce3-42fe-b666-878b41d27fca
config:
# 配置中心地址
server-addr: 49.235.122.65:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
namespace: 5e81acf8-7ce3-42fe-b666-878b41d27fca





启动类注解添加:

@EnableDiscoveryClient

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@EnableDiscoveryClient
@SpringBootApplication
public class LuckUidApplication {

public static void main(String[] args) {
SpringApplication.run(LuckUidApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ ID服务启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. .-------. \n" +
" | i--------------------i | \n" +
" | | | | \n" +
" \\| O O |/ \n" +
" | /\\ | \n" +
" | / \\ | \n" +
" | \\__/ | \n" +
" | __-- . | \n" +
" `-..-' ");
}

}

效果展示:

异常备注:

bootstrap.yml未生效:链接地址为 127.0.0.1

pom未添加spring-cloud-starter-bootstrap,

配置文件格式异常

项目启动完成后没有注册到nacos中:

子pom中未引用:spring-cloud-starter-alibaba-nacos-discovery