说明
Spring Boot 流行起来的一个原因是简化了配置,其中约定优于配置减少了开发者的配置负担,无需配置或者少量的配置就可以启动项目;自动化配置根据项目依赖自动配置应用程序,简化了开发流程。Solon 作为后起之秀也是采用了约定优于配置和自动配置的方式来简化配置。
约定
配置分类
启动参数
启动参数,在应用启动后会被静态化,也就是不能再修改。在Java 启动时指定,通过--key=value的形式指定。
系统属性
系统属性,在应用启动后会被静态化,也就是不能再修改。在Java 启动时指定,通过-Dkey=value的形式指定。
环境变量
操作系统的环境变量。”solon” 开头的环境变量,会被框架同步到系统属性(System::getProperties)与应用属性(Solon::cfg)。
应用配置
应用通过配置文件加载进来的配置。
主配置文件
应用配置文件为 resources/app.yml 或者 app.properties,文件名不能修改也不能配置。
配置加载规则
应用配置的加载主要分了六个层级,其加载规则为:
- 越静态的越前面
- 越动态的越后面
因为配置是以“键”为单位,且后面加载的会盖掉前面加载的,所以最终效果就是配置以最后加载为准。
加载顺序为:
- 主配置文件,先是主配置文件(app.yml),之后是带环境的主配置(app-{env}.yml),这里不特别区分(yml或者properties)。
- 内部配置文件,通过
solon.config.load加载的classpath目录下的配置文件。 - 外部配置文件,通过
solon.config.add加载的配置文件。 - 动态配置,启动应用时的配置,先是启动参数(–key=value),之后是系统属性(-Dkey=value),最后是环境变量(系统环境设置,或者docker -e 等方式指定)
- 启动时加载,通过
app.cfg().loadAdd或者app.cfg().loadEnv加载。 - 云端配置,通过分布式配置获取,如nacos。
配置引用规则
配置文件(或配置块)解析时,Solon.cfg() 已经存在的变量(或者配置块内的变量),可以被引用。属性之间的引用,使用 ${...}:
1 | test.demo1: "${db1.url}" #引用应用属性 |
常用配置
配置可能变更,所以直接看官网 https://solon.noear.org/article/174 。
注入配置
配置注入使用 ${...}的表达式,支持如下具体的配置:
${xxx}注入字段。${xxx:def}注入字段,如果没有则提供 def 默认值,此时只支持单值接收,不支持集合或实体。${classpath:xxx.yml}注入资源目录下的配置文件 xxx.xml
注入字段
1 |
|
注入类
1 |
|
注入参数
当注入到参数的时候,不支持自动刷新。
1 | class DemoConfig{ |
自动更新
自动刷新只适合于字段注入,以及单例的类。注意:如果不是单例,请不要开启自动刷新。
1 | class DemoService{ |
手动配置
通过 Solon.cfg() 获取 SolonProps 后进行操作。这里不做过多的描述,如果需要可以参看官网文档。
- https://solon.noear.org/article/31,手动获取配置及订阅变更的内容。
- https://solon.noear.org/article/910,SolonProps 接口参看
示例
配置本身相关简单,记住对应的配置加载规则和注入的方法,基本不会有什么太多的问题。这里不对示例做过多说明,更多需要参看,参看具体的代码 demo-solon01 。
小结
本文主要主要介绍了 Solon 的配置配置规则和自动化配置的方法。在理解了 Solon 的配置后,就可以更动态的做部署的配置。