关于加载顺序，参考上文！

### 1、主配置

主配置，是指打包到 jar 内部的“资源文件”：

| 配置文件 | 备注 | 
| -------- | -------- |
| `app.yml` 或 `app.properties`     | 主配置文件，必然会加载（体外配置尽量不要同名）     | 
| `app-${solon.env}.yml` 或 `app-${solon.env}.properties`     | 环境配置文件。会根据环境自动加载     | 

### 2、扩展配置（v3.0.6 后支持）

扩展配置，是指主配置之外的其它配置：


| 方式                                                                 | 说明                     | 
| --------------------------------------- | -------------- | 
| 通过 `solon.config.load:[uri]`（数组形态） 配置             | 方便在主配置指定，支持`*`表达式    | 
| 通过 `solon.config.add:uri,uri`（单值形态） 配置              | 方便运行时指定       |
| 通过 `Solon.cfg().loadAdd(uri)`（接口形态） 控制    | 方便代码控制          | 


uri 表达式说明（v3.0.6 作了统一）：


| 表达式 | 说明 | 
| -------- | -------- | 
| `file:xxx`     | 外部配置文件（通过 File 接口获取）     | 
| `classpath:xxx`     | 资源配置文件（通过 ClassLoader:getResource 接口获取）     | 
| `xxx`     | 尝试先获取“外部配置文件”，如果没有则尝试 “资源配置文件”    | 



*  `solon.config.load` 示例（方便在主配置指定）


```yaml
solon.config.load: 
  - "file:config/demo.yml"       #不要有空隔
  - "file:config/*.yml"
  - "classpath:config/demo.yml"
  - "classpath:config/*.yml"
  - "config/demo.yml"
  - "config/*.yml"               #会使用 classpath 规则找文件名，如果有外部时则用外部的
```




*  `solon.config.add` 示例（方便运行时指定）

```java
java -jar demo.jar -solon.config.add=file:config/demo.yml,classpath:config/demo.yml,config/demo.yml
```

或者

```java
java -Dsolon.config.add=file:config/demo.yml,classpath:config/demo.yml,config/demo.yml -jar demo.jar
```

*  `Solon.cfg().loadAdd(uri)` 示例（方便代码控制）

```java
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app->{
            Solon.cfg().loadAdd("file:config/demo.yml");
            Solon.cfg().loadAdd("classpath:config/demo.yml");
            Solon.cfg().loadAdd("config/demo.yml");
        });
    }
}
```


### 3、动态配置表达式


| 方式 | 说明 | 
| -------- | -------- | 
| 启动参数     | 方便 jvm 或 test 控制    | `java -jar demo.jar -solon.env=dev` <br/>或<br/> `App.main(new String[]{"-solon.env=dev"})` |
| 系统属性     | 方便 jvm 控制     | `java -Dsolon.env=dev -jar demo.jar` | 
| 环境变量     | 方便 docker 控制     |  `docker run demo -e 'solon.env=dev'` |

