配置文件
配置文件通过以下几种方式:
- 最常用的是集成到spring配置文件中就可以(如anyline.log-sql:false),anyline-boot会加载spring配置文件
- 在启动类中通过ConfigTable.配置项=值
- 在运行过程中通过ConfigTable修改配置项,如果遇到ConfigTable中没有预先定义的变量可以ConfigTable.put(key,value).get(key)
- ThreadConfig针对当前线程或单个数据源设置参数
- 遇到极端情况需要添加配置文件anylie-config.xml
配置文件中的 key与ConfigTable中定义的变量是一一对应的,如
ConfigTable.IS_AUTO_SPLIT_ARRAY = false;
对应anylie-config.xml配置文件的<property key="IS_AUTO_SPLIT_ARRAY ">false</property>
对应application.properties配置文件的anyline.auto-split-array=false
配置项有3个作用域:
-
全局
配置文件和ConfigTable的默认作用域 -
仅作用于当前线程
ThreadConfig config = ThreadConfig.instance()获取当前线程的配置对象。config初始值复制ConfigTable
config.key = value 设置当前线程内的配置项 -
仅作用于指定数据源
ThreadConfig config = ThreadConfig.instance(datasource)获取当前线程针对datasource的配置对象。config初始值复制当前线程的config,如果当前线程中未配置,则复制ConfigTable
config.key = value 设置当前线程内的配置项
ConfigTable也可以在运行过程中随时访问spring配置文件,可以用来替代@Value注解
如果项目中依赖了spring-boot-configuration-processor,集成开发环境会有key提示
如anyline.aliyun.oss.bucket=
anyline-mvc默认依赖了anyline-boot,anyline-boot中默认依赖了spring-boot-configuration-processor
通过情况下web项目需要依赖anyline-mvc,但有一些极精简的环境如果没有用到anyline-mvc还要自动提示配置文件需要添加anyline-boot依赖
这种情况一般就没必要添加anyline-boot了(会关联许多的jar包出来),有需要配置的话直接在启动类中通过ConfigTable配置就可以了。
以下是不常用到的情况:
参考每个模块下相应的配置文件示例
配置文件一般以configs作根节点
其下有多个config
在代码中可以根据config.key来确定调用哪个配置
<configs> <config key="default"> <property key="KEY">VALUE</property> </config> </configs>
anyline-nacos集成了nacos配置中心用来配置文件集中管理与实时同步,
需要在classpath下添加配置文件anyline-nacos.xml
在nacos上创建配置文件时,需要与配置类的CONFIG_NAME值保持一致,如PageNavi.CONFIG_NAME = "anyline-navi.xml"
<?xml version="1.0" encoding="UTF-8"?> <configs> <config key="default"> <!-- 服务器地址 --> <property key="ADDRESS">192.168.9.10</property> <!-- 端口 默认8848 --> <property key="PORT">8848</property> <!-- namespace 默认public --> <property key="NAMESPACE">public</property> <!-- group 默认 DEFAULT_GROUP --> <property key="GROUP">DEFAULT_GROUP</property> <!-- 是否自动扫描配置类 默认true --> <property key="AUTO_SCAN">true</property> </config> </configs>对于多个环境配置不同的情况 如生产环境与测试环境与开发环境
开发环境多变,生产与测试相对固定
为避免开发环境提交的配置误覆盖生产环境.需要在生产环境中创建一份以anyline-config-*.xml配置文件
配置文件在开发环境一般只有一个完整配置
在测试和生产环境会有其他的配置文件anyline-config-*.xml
系统加载配置文件时首先加载anyline-config.xml 后加载anyline-config-*.xml
如果有重复key,anyline-config.xml中的重复数据将会被覆盖.
是为了避免项目发布时,因修改生产环境配置文件失误造成的问题.
常见如多个境调用接口的IP不同,多个数据库中的主键值不一致
其中在核心配置文件anyline-config.xml中的RELOAD用来设置系统多长时间重新加载一次配置文件(包括所有配置文件)
如果没设置则会实时监听配置文件变化