anyline 配置文件

2022-09-16 09:27 更新
<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="APP_ID">wx67b***b345f</property>
        <property key="PAY_API_SECRET">jE74f***wvZj2</property>
        <property key="PAY_MCH_ID">138***02</property>
        <property key="SIGN_TYPE">MD5</property>
        <property key="PAY_NOTIFY_URL">http://***</property>
    </config> 
</configs>

参考每个模块下相应的配置文件示例

配置文件一般以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用来设置系统多长时间重新加载一次配置文件(包括所有配置文件)

几个常用的配置参数

//DataRow的key大小写(默认大写)
DataRow.DEFAULT_KEY_KASE = KeyAdapter.KEY_CASE.LOWER;
//http分页参数-当前当前第几页(默认page)
PageNaviConfig.DEFAULT_KEY_PAGE_NO = "pageNum";
//http分页参数-每页多少条(默认vol)
PageNaviConfig.DEFAULT_KEY_PAGE_ROWS = "pageSize";
//是否允许前端设置每页多少条(默认false)
PageNaviConfig.DEFAULT_VAR_CLIENT_SET_VOL_ENABLE = true;

不同环境下的配置文件

以anyline-aliyun-sms为例,每个工具类都会对应一个配置类与默认实例化类

如SMSUtil对应SMSConfig与SMSBeanSMSConfig用来配置帐号密码等

SMSBean用来在系统启动中往Spring上下文中注入一个默认的SMSUtil实例

SMSUtil就是开发中常用的工具了,如发送短信、查询短信接收状态、创建短信模板等

其中SMSConfig中的变量可以通过多种方式设置

1.配置文件anyline-aliyun-sms.xml(根据SMSConfig中的静态变量CONFIG_NAME = "anyline-aliyun-sms.xml";)

这个配置文件中可以配置多组帐号密码,开发过程中根据需要生成针对不同帐号的util

一般这样配置

<configs><config key="default">帐号、密码等</config><config key="instance-oa">帐号、密码等</config><config key="instance-crm">帐号、密码等</config></configs>SMSUtil.getInstance("instance-crm")的方式获取不同的util

2.如果帐号无限多、如开发一个SAAS平台,这时的帐号密码会由不同的租户或用户自己设置,数据通常要保存在数据中。在运行过程中根据用户环境来调用不同的util

在实例化util前可以通过

SMSConfig.register("用户编号", DataRow)的方式先注册,其中DataRow中的KEY与配置文件中的KEY相对应

SMSConfig中一般会提供多个register的重载

再通过SMSUtil.getInstance("用户编号")的方式获取util

3.对于一些简单的项目,不想使用配置文件的可以通过2的方式直接register方式注册一个

也可以设置SMSConfig中的静态变更 DEFAULT_配置文件中的KEY  

如DEFAULT_ACCOUNT(对应配置文件中的ACCOUNT)、DEFAULT_PASSWORD(对应配置文件中的PASSWORD)

这样在系统启动后会在Spring上下文中默认注入一个SMSUtil实例

4.现有的项目配置文件中设置,参考SMSBean中的属性

    @Value("${anyline.aliyun.sms.key:}")    private String ACCESS_KEY;

这样在系统启动后会在Spring上下文中默认注入一个SMSUtil实例

5.nacos配置中心

需要添加依赖anyline-nacos

anyline-nacos本身也有配置文件用来指定NACOS配置中心地址以及namespace/group

可以通过anyline-nacos.xml配置文件设置

如果是spring boot项目则按spring boot方式来配置如 nacos.config.server-addr

如果是spring cloud项目则按spring cloud方式来配置如 spring.cloud.nacos.config.server-addr

配置好nacos后在nacos中根据 根据SMSConfig中的静态变量CONFIG_NAME = "anyline-aliyun-sms.xml" 命名nacos中的dataId

Nacos配置文件

所有org.anyline包下的配置文件都统一实现了nacos的读取,实际是由父类AnylineConfig实现
如org.anyline.aliyun.oss.util.OSSConfig
public class OSSConfig extends AnylineConfig
每个类中有一个CONFIG_NAME 属性用来指定配置文件名称
public static String CONFIG_NAME = "anyline-aliyun-oss.xml";

接入过程:
1.依赖anyline-nacos

<dependency>
    <groupId>org.anyline</groupId>
    <artifactId>anyline-nacos</artifactId>
</dependency>

2.在项目中创建anyline-nacos.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <!-- 服务器地址,一般使用内网IP,如果对外开放注意访问控制,如利用nginx设置IP白名单 -->
        <property key="ADDRESS">IP或域名</property>
        <!-- 端口 默认8848 -->
        <property key="PORT">80</property>
 
        <!-- 没有特别需要,以下5个不需要配置 -->
        <!-- namespace 默认为空,会读取public空间下的配置文件,默认namespace是空不需要配置这项,而不是配置成public -->
        <property key="NAMESPACE">2c9cbc2f-9ad0-4050-848f-70765b3ddd12</property>
        <!-- group 默认 DEFAULT_GROUP -->
        <property key="GROUP">DEFAULT_GROUP</property>
        <!-- 是否自动扫描配置类 默认true -->
        <property key="AUTO_SCAN">true</property>
        <!-- 需要扫描的包,多个包以逗号分隔,默认只扫描org.anyline和org.anyboot两个包 -->
        <property key="SCAN_PACKAGE">org.anyline</property>
        <!-- 需要扫描的类,多个类以逗号分隔 -->
        <property key="SCAN_CLASS">org.anyline.entity.PageNaviConfig</property>
    </config>
</configs>

注意以上的NAMESPACE不是命名空间的名称而是一个8-4-4-4-12格式的ID号

关于微信配置文件白名单设置

由于微信API中有一部分接口仅对白名单IP开放,在测试机上经常会遇到调用接口失败的情况。

所以增加了配置项SERVER_WHITELIST,设置成与微信公众平台白名称一致,多个IP以","分开,一般在生产环境不需要设置,主要是针对测试环境,系统运行时如果检测到配置文件中设置了白名单并且本机IP不在白名单内,则遇到仅对白名单开发的API时直接跳过,不再尝试调用,如获取access token

微信公众平台白名单IP设置:

进入微信公众平台,点击开发——>基本配置 ,开启微信公众平台的开发者密码(AppSecret),记住密码,并保存;(如果没有开启,先开启)开启之后,在开发者密码(AppSecret)的下方会出现IP白名单;

添加ip白名单,添加调用微信接口的服务器的ip地址 

微信H5环境配置文件:anyline-wechat-wap.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="APP_ID">wx16***21a57</property>
        <property key="SIGN_TYPE">RSA</property>
        <property key="SERVER_TOKEN">***</property>
        <!-- 暂时与公众号回调一致 -->
        <property key="WEB_SERVER">http://***</property>
        <property key="OAUTH_REDIRECT_URL">http://***</property>
         
        <property key="PAY_API_SECRET">oaonhd**********ohvottvq</property>
        <property key="PAY_MCH_ID">143*****402</property>
        <property key="PAY_NOTIFY_URL">http://****/js/hm/pay/ntf/wx_mp</property>
        <property key="PAY_CALLBACK_URL"></property>
        <property key="PAY_KEY_STORE_FILE">D:\\apiclient_cert.p12</property>
        <property key="PAY_KEY_STORE_PASSWORD">111111</property>
    </config>
</configs>

微信开放台配置文件:anyline-wechat-open.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="APP_ID">wx67***45f</property>
        <property key="APP_SECRET">f013***5473a877</property>
        <property key="SIGN_TYPE">MD5</property>
        <property key="SERVER_TOKEN">any***rg</property>
         
        <property key="PAY_API_SECRET">oaonhd**********ohvpvbozqqayottvq</property>
        <property key="PAY_MCH_ID">143*****402</property>
        <property key="PAY_NOTIFY_URL">http://****/js/hm/pay/ntf/wx_mp</property>
        <property key="PAY_CALLBACK_URL"></property>
        <property key="PAY_KEY_STORE_FILE">D:\\apiclient_cert.p12</property>
        <property key="PAY_KEY_STORE_PASSWORD">111111</property>
    </config>
</configs>

微信公众平台配置文件:anyline-wechat-mp.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="APP_ID">wxc403*******b5f06</property>
        <property key="APP_SECRET">2ede1c*********c915f440745df8</property>
        <property key="SIGN_TYPE">RSA</property>
        <property key="SERVER_TOKEN">haofresh</property>
        <property key="WEB_SERVER">http://******</property>
        <property key="OAUTH_REDIRECT_URL">http://*******/wap/hm/lg/cb_wx_mp</property>
         
        <property key="PAY_API_SECRET">oaonhd**********ohvpvbozqqayottvq</property>
        <property key="PAY_MCH_ID">143*****402</property>
        <property key="PAY_NOTIFY_URL">http://****/js/hm/pay/ntf/wx_mp</property>
        <property key="PAY_CALLBACK_URL"></property>
        <property key="PAY_KEY_STORE_FILE">D:\\apiclient_cert.p12</property>
        <property key="PAY_KEY_STORE_PASSWORD">111111</property>
        <!-- 支付到银行卡公钥文件 -->
        <property key="PAY_BANK_RSA_PUBLIC_KEY_FILE"></property>
        <property key="SERVER_WHITELIST"></property>
    </config>
</configs>

核心配置文件:anyline-config.xml

<!-- 多长时间加载一次配置文件 (秒),包括核心配置文件与其他配置文件-->
<property key="RELOAD">120</property>
<!-- 存放在servlet context中的key(配置文件热重载时不覆盖当前key)(如el表达式中引用${al.RELOAD})-->
<property key="SERVLET_ATTRIBUTE_KEY">al</property>
<property key="DEBUG">true</property>
<!-- sql 存放根目录 -->
<property key="SQL_STORE_DIR">/WEB-INF/classes/sql</property>
<!-- 密钥 文件路径 -->
<property key="DES_KEY_FILE">/WEB-INF/classes/key.xml</property>
<!-- 国际化文本存放目录 -->
<property key="I18N_MESSAGE_DIR">/WEB-INF/classes/message</property>
<!-- 国际化消息SESSION存放KEY -->
<property key="I18N_MESSAGE_SESSION_KEY">I18N_MESSAGE_SESSION_KEY</property>
<!-- 国际化消息默认语言 -->
<property key="I18N_MESSAGE_DEFAULT_LANG">cn</property>
<!-- 默认主键 -->
<property key="DEFAULT_PRIMARY_KEY">ID</property>
<!-- 自动添加主键 -->
<property key="AUTO_CREATE_PRIMARY_KEY">true</property>
<!-- 是否显示执行的SQL -->
<property key="SHOW_SQL">true</property>
<property key="SHOW_SQL_PARAM">true</property>
<property key="SHOW_SQL_WHEN_ERROR">false</property>
<property key="SHOW_SQL_PARAM_WHEN_ERROR">false</property>

<!-- 是否更新NULL列 -->
<property key="IS_UPDATE_NULL_COLUMN">false</property>
<!-- 是否更新空列 -->
<property key="IS_UPDATE_EMPTY_COLUMN">false</property>

<!-- 生成主键的存储过程 按3个输入参数的格式:表,列,其他-->
<property key="AUTO_CREATE_PRIMARY_KEY">true</property>
<property key="CREATE_PRIMARY_KEY_PROCEDURE">PROC_CREATE_PRIMARY</property>

<!-- 模板文件目录 -->
<property key="TEMPLET_FILE_PATH_WEB">/WEB-INF/web/home/template/default.jsp</property>
<property key="TEMPLET_FILE_PATH_WAP">/WEB-INF/def/wap/common/templet.jsp</property>
<!-- fail文件路径 -->
<property key="FAIL_FILE_PATH">/WEB-INF/def/web/common/error/fail.jsp</property>
<!-- error文件路径 -->
<property key="ERROR_FILE_PATH">/WEB-INF/def/web/common/error/error.jsp</property>

<!-- 是否启用(一级)缓存 -->
<property key="IS_USE_CACHE">true</property>

密钥配置文件:key.xml

​key.xml设置加密解密密钥,第1个为项目正在使用的默认密钥,

其他的为历史密钥,主要解密搜索引擎快照中或收藏中的的密文.

 (通过第1组密钥解密失败后,会依次尝试其他密钥)

key.xml中 密钥文件一般不修改,应该新添加一组配置,把原来默认的密钥放在后面的位置.

version长度不可多于3位 

如果删除或修改密钥,有可能造成通过搜索引擎快照连接过来的访问解密失败.

在新添加了默认密钥一段时间后,如果确定引擎中已更新至最新版本可以删除历史密钥,以提高解密速度.​

<!--?xml version="1.0" encoding="UTF-8"?--> 
<keys>
<!-- 第一个为默认密钥,之后为历史密钥(主要解密搜索引擎快照) -->
<!-- 密钥版本号长度<=3 -->
    <key version="v01">
        <!-- 默认密钥 -->
        <des-key>5****6d9</des-key>
        <!-- URL参数密钥 -->
        <des-key-param>@#CF***(*7#</des-key-param>
        <!-- URL参数名密钥 -->
        <des-key-param-name>@***$%#</des-key-param-name>
        <!-- URL参数值密钥 -->
        <des-key-param-value>@#)_UI%097#</des-key-param-value>
         
        <!-- 默认前缀 -->
        <des-prefix></des-prefix>
        <!-- URL参数前缀 -->
        <des-prefix-param>p</des-prefix-param>
        <!-- URL参数名前缀 -->
        <des-prefix-param-name>k</des-prefix-param-name>
        <!-- URL参数值前缀 -->
        <des-prefix-param-value>v</des-prefix-param-value>
    </key>
</keys>

邮件发送配置文件:anyline-mail.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="ACCOUNT">server@anyline.org</property>
        <property key="USERNAME">anyline</property>
        <property key="PASSWORD">tySb6ZK******5SXXPNZhg</property>
        <property key="PROTOCOL">smtp</property>
        <property key="HOST">smtp.anyline.org</property>
        <property key="PORT">25</property>
    </config>
</configs>

QQ公众平台配置文件:anyline-qq-mp.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="APP_ID">101***22</property>
        <property key="API_KEY">bd7f56f0***822566</property>
        <!-- 登录成功回调url 保持与QQ互联(https://connect.qq.com/manage.html)对应的APP网站回调域一致 -->
        <property key="OAUTH_REDIRECT_URL">http://***</property>
    </config>
</configs>

QQ开放平台配置文件:anyline-qq-open.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="APP_ID">wx67b***b345f</property>
        <property key="PAY_API_SECRET">jE74f***wvZj2</property>
        <property key="PAY_MCH_ID">138***02</property>
        <property key="SIGN_TYPE">MD5</property>
        <property key="PAY_NOTIFY_URL">http://***</property>
    </config>
</configs>

极光推送配置文件:anyline-jpush.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="APP_KEY"></property>
        <property key="MASTER_SECRET"></property>
    </config>
</configs>

环信配置文件:anyline-easemob.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config>
        <property key="HOST">https://a1.easemob.com</property>
        <property key="APP_KEY">1118***uo</property>
        <property key="ORG_NAME">111***5170</property>
        <property key="APP_NAME">***</property>
        <property key="CLIENT_ID">YXA***5LujQ</property>
        <property key="CLIENT_SECRET">YXA6*****CilUFKxP2jl-wE</property>
    </config>
</configs>

高德配置文件:anyline-amap.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="KEY">3b9371b483******c219522fdc</property>
        <property key="TABLE_ID">5937******ab517b6a</property>
        <property key="PRIVATE_KEY">72c5c*****4144682</property>
    </config>
</configs>

阿里云短信配置文件:anyline-aliyun-sms.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <!-- 申请地址:https://ak-console.aliyun.com -->
        <property key="ACCESS_KEY"></property>
        <property key="ACCESS_SECRET"></property>
        <property key="SMS_SIGN"></property>
    </config>
</configs>

阿里云对象存储配置文件:anyline-aliyun-oss.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="ACCESS_ID"></property>
        <property key="ACCESS_SECRET"></property>
        <property key="ENDPOINT">oss-cn-shanghai.aliyuncs.com</property>
        <property key="BUCKET">alcdn</property>
        <!-- 生成的密钥多长时间有效  -->
        <property key="EXPIRE_SECOND">300</property>
        <!-- 默认文件目录 -->
        <property key="DIR"></property>
    </config>
</configs>

支付宝配置文件:anyline-alipay.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <property key="APP_ID">wx16***21a57</property>
        <property key="SIGN_TYPE">RSA</property>
        <property key="SERVER_TOKEN">***</property>
        <!-- 暂时与公众号回调一致 -->
        <property key="WEB_SERVER">http://***</property>
        <property key="OAUTH_REDIRECT_URL">http://***</property>
         
        <property key="PAY_API_SECRET">oaonhd**********ohvottvq</property>
        <property key="PAY_MCH_ID">143*****402</property>
        <property key="PAY_NOTIFY_URL">http://****/js/hm/pay/ntf/wx_mp</property>
        <property key="PAY_CALLBACK_URL"></property>
        <property key="PAY_KEY_STORE_FILE">D:\\apiclient_cert.p12</property>
        <property key="PAY_KEY_STORE_PASSWORD">111111</property>
    </config>
</configs>

分页配置文件:anyline-navi.xml

<?xml version="1.0" encoding="UTF-8"?>
<configs>
    <config key="default">
        <!-- 第一页 -->
        <property key="STYLE_BUTTON_FIRST">第一页</property>
        <!-- 上一页 -->
        <property key="STYLE_BUTTON_PREV">上一页</property>
        <!-- 下一页 -->
        <property key="STYLE_BUTTON_NEXT">下一页</property>
        <!-- 最后页 -->
        <property key="STYLE_BUTTON_LAST">最后页</property>
        <!-- 数据统计格式 -->
        <property key="STYLE_STAT_FORMAT"></property>
        <!-- 查询无内容提示 -->
        <property key="STYLE_DATA_EMPTY"></property>
        <!-- 最后一页提示 -->
        <property key="STYLE_PAGE_OVER"></property>
        <!-- 下标数量 -->
        <property key="VAR_PAGE_RANGE">5</property>
        <!-- 显示上一页下一页 -->
        <property key="VAR_SHOW_BUTTON">true</property>
        <!-- 显示下标 -->
        <property key="VAR_SHOW_INDEX">true</property>
        <!-- 显示下标省略符 1...5,6,7,8,9...20 -->
        <property key="VAR_SHOW_INDEX_ELLIPSIS">true</property>
        <property key="STYLE_INDEX_ELLIPSIS">...</property>
        <!-- 显示数据统计 -->
        <property key="VAR_SHOW_STAT">true</property>
        <!-- 跳转到 -->
        <property key="VAR_SHOW_JUMP">false</property>
        <!-- 加载更多格式 -->
        <property key="STYLE_LOAD_MORE_FORMAT">加载更多</property>
        <property key="STYLE_FILE_PATH">//www.anyline.org/plugin/navi/navi.css</property>
        <property key="SCRIPT_FILE_PATH">//www.anyline.org/plugin/navi/navi.js</property>
         
        <!-- 每页多少条 -->
        <property key="VAR_PAGE_DEFAULT_VOL">10</property>
        <!-- 每页最多可设置显示多少条 -->
        <property key="VAR_PAGE_MAX_VOL">100</property>
        <!-- 是否允许前端设置每页多少条 -->
        <property key="VAR_CLIENT_SET_VOL_ENABLE">true</property>
         
        <!-- 用户选择每页多少条 -->
        <!-- STYLE_PAGE_VOL与STYLE_PAGE_VOL_NUMBERS 会相互覆盖 (以配置文件后设置的为准) -->
        <property key="STYLE_PAGE_VOL">&lt;select onchange=''_navi_change_vol({navi-conf})'' id=''navi_vol_set_{navi-conf-key}'' class=''navi-vol-set''&gt;&lt;option value=''10''&gt;10 条/页&lt;/option&gt;&lt;option value=''20''&gt;20 条/页&lt;/option&gt;&lt;option value=''30''&gt;30 条/页&lt;/option&gt;&lt;option value=''50''&gt;50 条/页&lt;/option&gt;&lt;option value=''100''&gt;100 条/页&lt;/option&gt;&lt;/select&gt;</property>
        <!-- 生成的select.class -->
        <property key="VAR_PAGE_VOL_CLASS">navi-vol-set</property>
        <!-- 显示位置 last:最后,page:页标之后-->
        <property key="VAR_PAGE_VOL_INDEX">last</property>
        <!-- 生成select的option -->
        <property key="VAR_PAGE_VOL_NUMBERS">10,20,30,50,100</property>
        <!-- 统计样式 -->
        <property key="STYLE_STAT_FORMAT">&lt;div class=''navi-summary''&gt;共&lt;span class=''navi-total-row''&gt;{totalRow}&lt;/span&gt;条 第&lt;span class=''navi-cur-page''&gt;{curPage}&lt;/span&gt;/&lt;span class=''navi-total-page''&gt;{totalPage}&lt;/span&gt;页&lt;/div&gt;</property>
         
    </config>
</configs>
























以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号