<mark>此插件，主要社区贡献人（4＆79）</mark>

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



#### 1、描述

分布式扩展插件。基于 polaris（[代码仓库](https://gitee.com/polarismesh/polaris)）适配的 solon cloud 插件。提供配置服务、注册与发现服务。v1.11.6 后支持

#### 2、能力支持

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

#### 3、配置示例

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

solon.cloud.polaris:
  config:
    server: localhost:8093   #polaris 配置服务地址
    load: "demoapp.yml"    #加载配置到应用属性（多个以","隔开）
  discovery:
    server: localhost:8091   #polaris 发现服务地址
```


更丰富的配置：

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

solon.cloud.polaris:
  username: polaris        #polaris链接账号
  password: polaris        #polaris链接密码
  config:
    server: localhost:8093   #polaris 配置服务地址
    load: "demoapp.yml"    #加载配置到应用属性（多个以","隔开）
  discovery:
    server: localhost:8091   #polaris 发现服务地址
```  

提醒：通过 "...config.load" 加载的配置，会进入 Solon.cfg() 可使用 @Inject 注入

#### 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、演示项目

暂无...