快速开始 | Spring Cloud Alibaba
官方的demo照着做了一遍,走不通,报各种错误,所以自己搞一个。
jdk版本及安装
因为用的nacos是2022.0.0.0-RC2版本的,要求jdk为jdk21
下载并安装jdk21,重点是安装后要在jdk21目录下执行以下命令生成jre,jdk21安装时不会默认生成jre
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
https://www.cnblogs.com/Acolyte/articles/17813045.html
nacos安装
nacos安装依赖数据库,可以参考快速开始里面的nacos安装,那个即可安装成功。
nacos配置
为了演示清楚,这里需要新增local命名空间,演示不同环境配置的实现。
新增命名空间
新增配置信息
此处要选择local的命名空间
点击发布,保存配置信息
nacos-config项目
新建项目
新建nacosConfigDemo的springboot项目
添加依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.13</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2022.0.0.0-RC2</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
添加配置
server:
port: 18084
management:
endpoints:
web:
exposure:
include: "*"
spring:
application:
name: nacosConfigDemo
cloud:
nacos:
config:
server-addr: localhost:8848 #nacos-server的服务器地址
# 以下配置项必须填写
username: 'nacos'
password: 'nacos'
file-extension: yaml #指定配置文件的后缀。目前只支持properties、yaml。
refresh: true
代码示例
@RestController
@RequestMapping("/nacos")
@RefreshScope
public class NacosConfigController {
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/configInfo")
public String getConfigInfo() {
return configInfo;
}
}
vm options启动参数
-Dspring.profiles.active=local -Dspring.cloud.nacos.config.namespace=local
启动项目
访问链接:http://127.0.0.1:18084/nacos/config/configInfo 获取配置中心的值
总结
在本地、开发、测试、uat、生产等环境中通过修改启动参数
-Dspring.cloud.nacos.config.namespace=local,来获取不同环境的配置,实现不同环境的配置隔离。
这是个简单可行的demo,有什么不足或者需要完善的地方欢迎交流指正。