SpringBoot或SpringCloud集成Nacos

1年前未命名106
SpringBoot或SpringCloud集成Nacos 小码农的 于2023-01-31 18:04:45发布 283 收藏 1 分类专栏: Java 文章标签: spring boot Powered by 金山文档 Java 专栏收录该内容 20 篇文章 0 订阅 订阅专栏 一、创建一个项目

首先创建一个空项目,然后引入Nacos的依赖,并选择正确的SpringBoot和Nacos版本,如果版本选择不对的话可能会启动失败,带来很大的问题

    <!--SpringBoot的版本-->     <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!--Nacos配置中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2021.1</version> </dependency> <!--Nacos 注册中心--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2021.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

在整合Nacos过程中需要根据 SpringBoot 版本来选择 注册中心和配置中心的依赖版本,在这里我选择的是如下的这个版本。

如果需要选择其他版本请看版本说明-->版本说明。

二、使用注册中心

1、首先增加注册中心的依赖配置,在application.yml配置文件中加入以下配置

server: port: 8089 spring: application:         #需要标识应用的名称 name: nacosProject cloud: nacos: discovery:         #Nacos 注册中心的地址 server-addr: 127.0.0.1:8848 #注册到不同的命名空间 加上命名空间ID 如果默认为public 则namespace则不用配置 namespace: f1546389-b623-4424-aff0-b8a392219afb

2、在启动类中加入注解 @EnableDiscoveryClient

@SpringBootApplication @EnableDiscoveryClient public class NacosProjectApplication { public static void main(String[] args) { SpringApplication.run(NacosProjectApplication.class, args); }

3、 启动服务器

注:Nacos的运行需要以至少2C4g60g*3的机器配置下运行。

Linux/Unix/Mac Nacos启动命令

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

Linux/Unix/Mac Nacos关闭命令

sh shutdown.sh

Windows Nacos启动命令

启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

Windows Nacos关闭命令

shutdown.cmd 或者双击shutdown.cmd运行文件。

配置完上面的基本没什么问题,启动服务后就可以在nacos注册中心内看到注册的服务了。这里只是单纯的记录了整合nacos,如果有其他需要请自行添加。

三、使用注册中心出错问题解决

问题:

如果配置好了注册中心,在启动过程中出现下面的问题,多半是由于版本导致的问题

解决办法:根据版本说明,选择正确的版本依赖

四、使用配置中心

1、 添加配置中心的配置文件

server: port: 8089 spring: profiles: active: dev #需要定义应用名称 application: name: nacosProject cloud: nacos: #配置nacos配置中心 discovery: #Nacos 注册中心的地址 server-addr: 111.11.103.215:8848 #注册到不同的命名空间 加上命名空间ID 如果默认为public 则namespace则不用配置 namespace: e1eee36e-4fcf-47e2-856b-1d49a1bce3d9 #配置nacos配置中心 config: server-addr: 111.11.103.215:8848 #配置中心的地址 file-extension: yml #后缀名 group: DEFAULT_GROUP #分组 namespace: e1eee36e-4fcf-47e2-856b-1d49a1bce3d9 #命名空间的id

2、 创建一个application.yml文件 自定义本地的值,跟nacos做区分

ruoyi: # 名称 name: 本地1 # 版本 version: 3.3.3

3、 创建一个测试类

import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; /** * @ Description: * @PACKAGE_NAME: com.nacos.nacosproject.controller * @date 2023-01-31 11:19 */ @RefreshScope @RestController //自动刷新注解 @RequestMapping("/order") public class OrderController { @Value("${ruoyi.name}") private String name; @Value("${ruoyi.version}") private String version; @RequestMapping("/getOrder") public Map<Object,Object> tesController(){ Map<Object,Object> map = new HashMap<>(); map.put("name",name); map.put("age",version); return map; } }

4、 在IDEA 中添加环境变量

spring.cloud.bootstrap.enabled=true

5、 然后测试接口看是否能获取到nacos配置文件上的值

标签: [db:标签TAG]

相关文章

大数据分析案例-基于随机森林算法构建新闻文本分类模型

大数据分析案例-基于随机森林算法构建新闻文本分类模型...

如何在CSDN中使用ChatGPT

如何在CSDN中使用ChatGPT...

做 SQL 性能优化真是让人干瞪眼

做 SQL 性能优化真是让人干瞪眼...

有了独自开,一个人就是一个团队

有了独自开,一个人就是一个团队...

ChatGPT到底是个啥 - 它甚至会和狗说话

ChatGPT到底是个啥 - 它甚至会和狗说话...

2022年第四届全国高校计算机能力挑战赛c++组决赛

2022年第四届全国高校计算机能力挑战赛c++组决赛...