网上关于 Nacos 的使用介绍已经很多了,尤其是与 SpringBoot 的整合使用。怎么安装也跳过了,主要就讲 Nacos 在 Solon 里的使用,这个网上几乎是没有的。
Solon 一个高效的应用开发框架:更快、更小、更简单,也是个新起的 Java 生态。 启动快 5 ~ 10 倍;qps 高 2~ 3 倍;运行时内存节省 1/3 ~ 1/2;打包可以缩到 1/2 ~ 1/10;同时支持 jdk8, jdk11, jdk17, jdk19。
Solon 项目官网:https://solon.noear.org
Solon Cloud 是一套分布式(或微服务)开发的接口与配置规范。其中 Solon Cloud Config 为云端配置服务,主要提供分布式配置服务的接口并与相关的中间件客户端进行适配:
其中 nacos-solon-cloud-plugin,是 nacos 关于 solon cloud config 的适配。也是本文的主角。
安装好 Nacos 配置后,需要准备下配置数据。新建个 “test” 命名空间;然后,准备 DataId 为 “demoapp.yml” 配置(这个配置,用于导入到应用属性):
demo.user.name: "1"
再准备 DataId 为 “demo-ds” 配置(这个配置,将直接使用):
demo.ds:
url: ""
username: ""
password: ""
借助 Solon Initializr( https://solon.noear.org/start/ ) 生成一个 maven + java 的项目模块(这样方便些)。用开发工具打开项目(比如 IDEA)。在 pom.xml 里面添加依赖:
<dependencies>
<dependency>
<groupId>org.noear</groupId>
<artifactId>nacos-solon-cloud-plugin</artifactId>
</dependency>
</dependencies>
然后,在应用属性配置文件 “app.yml”,添加 nacos 的连接信息:
solon.app:
name: "demoapp"
group: "demo"
namespace: "test"
solon.cloud.nacos:
server: "localhost:8848" #nacos 服务地址
config:
load: "demoapp.yml" #加载配置到应用属性(多个以","隔开)
“...config.load” 会导入配置到应用属性。之后可用 “@Inject” 注入,也可用 “Solon.cfg().get (...)” 获取。
在模板项目里,添加 "Config" 类:
@Configuration
public class Config {
//注入用户名 //来自 config.load 导入到应用属性的
@Inject("${demo.user.name}")
String userName;
//注入并转为数据源 //直接来自 DataId = demo-ds
@Bean
public DataSource ds(@CloudConfig("demo-ds") HikariDataSource ds){
return ds;
}
}
直接获取 nacos 配置,可以通过 "@CloudConfig" 注解,或者 "CloudClient.config ().pull (group, name)" 手动获取。
很多情况下,公司会有相同的代码,但是不同的运营项目。这个场景下,自然是希望代码都不用改。
在 Nacos 里,添加 “test2” 命名空间。然后把刚才的配置 DataId 复制一份。
solon.app:
name: "demoapp"
group: "demo"
namespace: "test2"
solon.cloud.nacos:
server: "localhost:8848" #nacos 服务地址
config:
load: "demoapp.yml" #加载配置到应用属性(多个以","隔开)
java -Dsolon.app.namespace=test2 -jar demoapp.jar
services:
demoapp:
image: demo/demoapp:1.0.0
container_name: demoapp
environment:
- solon.app.namespace=test2
- TZ=Asia/Shanghai
ports:
- 8080:8080
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!