```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>nacos3-solon-cloud-plugin</artifactId>
</dependency>
```



#### 1、描述

（v3.3.3 后支持）分布式扩展插件。基于 nacos3 适配的 solon cloud 插件。提供配置服务、注册与发现服务。

#### 2、能力支持

| 云端能力接口 | 说明 | 备注 |
| -------- | -------- | -------- |
| CloudConfigService        | 云端配置服务            | 支持 namespace；支持 group     |
| CloudDiscoveryService    | 云端注册与发现服务   | 支持 namespace；支持 group     |

#### 3、配置示例

```yml
solon.app:
  name: "demoapp"
  group: "demo"
  namespace: "test"

solon.cloud.nacos: 
  server: "localhost:8848"           #nacos2 服务地址
  config:
    load: "demoapp.yml"               #加载配置到应用属性（多个以","隔开）//对应 dataId
```

更丰富的配置：

```yml
solon.app:
  name: "demoapp"
  group: "demo"
  meta:                   #添加应用元信息（可选）
    version: "v1.0.2" 
    author: "noear"
  tags: "aaa,bbb,ccc"     #添加应用标签（可选）

solon.cloud.nacos:
  server: "localhost:8848,localhost:8847"  #nacos 服务地址
  namespace: "3887EBC8-CD24-4BF7-BACF-58643397C138" #nacos 命名空间
  contextPath: "nacosx"                    #nacos 服务的上下文路径（可选）
  username: "aaa"
  password: "bbb"
  config:
    load: "demoapp.yml,group:test.yml"                #加载配置到应用属性（多个以","隔开）
  discovery:
    clusterName: "DEFAULT"
```

提醒：通过 "...config.load" 加载的配置，会进入 Solon.cfg() 可使用 @Inject 注入。"group:key" 是指定分组的配置加载。

#### 4、代码应用

```java
public class DemoApp {
    public void main(String[] args) {
        //启动时，服务会自动注册
        SolonApp app = Solon.start(DemoApp.class, args);
    }
}

@Slf4j
@Controller
public class DemoController{
    //配置服务的功能（注解模式） //只有接收实体为单例，才能用 autoRefreshed
    @CloudConfig(name = "demoTitle", autoRefreshed = true)  
    String demoTitle;
    
     //配置服务的功能（注解模式）
    @CloudConfig("demoDb") 
    DbContext demoDb;

    @NamiClient            //RPC服务发现的功能（注解模式）
    RockService rockService;
   
    @Mapping("/")
    public void test(){
        //配置服务：使用配置的数据库上下文进行查询
        Map map = demoDb.table("water_reg_service").limit(1).selectMap("*");

        //Rpc发现服务：调用Rpc接口
        AppModel app = rockService.getAppById(12);
    }
}

//配置订阅：关注配置的实时更新
@CloudConfig("demoDb")
public class TestConfigHandler implements CloudConfigHandler {
    @Override
    public void handler(Config config) {

    }
}
```


#### 5、演示项目

* [https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9021-config-discovery_nacos](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9021-config-discovery_nacos)