Nacos
Nacos的基础配置可以看这篇的Nacos下载与配置部分
SpringCloud
SpringBoot版本为2.6.5
Java版本为17
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com</groupId>
<artifactId>demonacos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demonacos</name>
<description>demonacos</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>4.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2023.0.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2023.0.1.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.5.7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
与上一个SpringBoot主要的改变就是三个spring-cloud的起步依赖,一个是配置相关,两个是nacos相关。
SpringCloud使用bootstrap.yml作为配置文件,所以需要新建bootstrap.yml,填写配置内容:
spring:
application:
name: demo
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
file-extension: yml
namespace: dbfe38f8-482c-4d49-a96e-b40e46f20afa
group: DEMO_GROUP
server-addr: 127.0.0.1:8848
spring.application.name
:这个属性定义了应用名称,并且这个名称通常会被用作Nacos配置中心的dataId
的一部分。
server-addr,如果没有修改过配置就写这个,如果不是本地运行或者修改过端口号就自己做相应修改。
file-extension, 配置文件的扩展名,以此配置文件为例,demo和yml拼接起来,也就是demo.yml,这就是你的Nacos的Data Id。所以你需要根据自己的Data Id做相应的修改。
如果Nacos自己新建了命名空间那么,namespace写命名空间的id,没有新建用的是默认的话应该就不用写,默认的是public
如果自己没有修改过group,应该也是可以不写,默认是DEFAULT_GROUP,修改过的话就写你修改的。
运行文件
使用SpringCloud,运行文件不需要做任何修改。
测试程序
package com.demonacos.controller;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class DemoController {
@Value(value = "${author}")
private String author;
@Value(value = "${server.port}")
private String port;
@GetMapping("/test")
public String test() {
log.info(author);
return author;
}
@GetMapping("/test2")
public String test2() {
return port;
}
}
@Value(value = "${author}") ,使用Value注解,通过value属性获取到你Nacos的配置。
自动刷新是使用类上方的@RefreshScope注解,就是你nacos配置改变之后后端也可以不重新启动而获取新的配置。但是这里存在一些问题还没有解决,所以不做展示。
我的nacos配置:
server:
port: 8081
author: Alkaid
也是用的yaml格式。所以我取author就能够取到Alkaid这个值,假如说我想取端口号,就可以写
value = "${server.port}"
所以我在nacos直接配了服务的运行端口号,如果我读nacos的配置成功了,我的项目在运行起来,看他端口号就能够看到是8081而不是默认的8080。
Mybatis-Plus
在采用数据库持久层框架时,考虑到Mybatis-Plus不仅集成了Mybatis的所有核心功能,还提供了许多实用的增强特性,我选择了直接使用Mybatis-Plus的最新版本。这样做不仅确保了能够充分利用Mybatis的灵活性和强大功能,还能够享受到Mybatis-Plus带来的便捷和高效。