项目环境和版本
- JDK 1.8.0_281
- SpringBoot 2.6.5
- Maven 3.8.1
- SpringCloud 2021.0.1
- SpringCloud Alibaba 2021.0.1.0
- AlibabaNacos-server 2.0.0
SpringBoot项目配置
父Maven依赖引入
<spring-cloud.version>2021.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
<!-- SpringCloud 微服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 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>
子Maven依赖引入
<!-- springcloud alibaba nacos config 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- springcloud alibaba nacos discovery 注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- springcloud loadbalancer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
<!-- springcloud bootstrap -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
Nacos安装
1、使用Git克隆Nacos项目
git clone https://github.com/alibaba/nacos/releases
【下载的慢的话可以建议采用】可直接用gitee国内镜像:
git clone https://gitee.com/mirrors/Nacos?_from=gitee_search
2、使用Maven编译Nacos安装包
# 进入Nacos文件夹
cd Nacos/
# 构建和安装项目
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
-Prelease-nacos
: 使用release-nacos
Maven配置文件,该文件包含了与Nacos相关的依赖和配置信息。-Dmaven.test.skip=true
: 跳过执行测试。这个参数可以加快构建过程,但请注意,跳过测试可能会导致无法发现潜在的问题。clean
: 在构建之前清理项目目录。install
: 将构建的项目安装到本地Maven仓库。-U
: 强制从远程仓库更新依赖。
3、编译好的tar包通过ssh工具上传到服务器
作者服务器用的是 Linux-Ubuntu
4、解压tar包
tar -xvf nacos-server-$version.tar.gz
5、启动
sh startup.sh -m standalone
-m standalone
表示单机启动,nacos默认为集群启动。
6、配置数据库
- 创建数据库、数据表
- Nacos Config 解压有的sql脚本
- 在Config里边修改数据源
7、成功
nacos-server启动成功
SpringBoot配置文件
bootstrap.yml配置
spring:
application:
name: SpringCloudDemo # 应用程序名称
main:
allow-circular-references: true # 允许循环引用
config:
activate:
on-profile: prod # 激活的配置文件
cloud:
nacos:
discovery:
namespace: xx11c577-f525-4d9e-aac0-bcc73a6d98xx # Nacos服务发现的命名空间
server-addr: 127.0.0.1:8848 # Nacos服务发现的服务器地址
config:
server-addr: 127.0.0.1:8848 # Nacos配置中心的服务器地址
file-extension: yml # 配置文件的扩展名
prefix: ${spring.application.name} # 配置文件的前缀
namespace: xx11c577-f525-4d9e-aac0-bcc73a6d98xx # Nacos配置中心的命名空间
group: DEFAULT_GROUP # 配置文件的分组
refresh: true # 刷新配置
启动类增加注释
@SpringBootApplication
@EnableDiscoveryClient
public class SpringBootApplication
{
SpringApplication.run(RuoYiApplication.class, args);
}
成功
遇到问题
- 循环依赖
//使用@Lazy 延迟加载
import org.springframework.context.annotation.Lazy;
@Lazy
@Autowired
private Servise service;
解决
- Swagger版本冲突
bootstrap.yml中增加 如下
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
加入依赖
<swagger.core.version>1.6.2</swagger.core.version>
<!-- Swagger 依赖配置 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>${swagger.core.version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>${swagger.core.version}</version>
</dependency>
解决