配置说明
简述
本篇主要讲述spring的application文件的配置,与model包类型,配置文件也有一个相对应的类,它就是edi.rule.config.JSRuleProperties
用例
spring:
profiles:
#active: mysql
edi:
rule:
locations: test.business.po
#processor: test.myrule.JSRuleDBProcessor
message: /rule-message/chinese.properties
mybatis: /META-INF/rule-mybatis-config.xml
http:
#connectTimeout: 10000
readTimeout: 10000
headArgs: qweewq
headSign: asddsa
#engineControllerUrl: http://localhost:8012/api/json/script
open:
#replenishColumns: true
#close:
#engineController: true
models: test.rule.JSRuleGetCustomModel
config:
dateFormat: yyyy-MM-dd HH:mm:ss,yyyy/MM/dd HH:mm:ss
calculateScale: 2
#calculateMode: 2
#security:
type: sm2
publicKey: 04a14dd8d62e90d5cfd7b59ce89e346e0e7def05281361f7ef47676c1e534ca85b3d88839b02e9b57b2818f46beeea4eb88a3e5abe429d0e866ddea9c8c7756f7a
privateKey: 00f8d5d53f123f1a001403a27acb16b8408dff48f249b2ed7d2429b3394628bc36
#type: rsa
#publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+h70Xxu9L25Sw8M9nyw4g8d6YLD56RmiCrU4rnGamS9iESl69eSBBF2IR5gN+kBPSiQrq84JBLJ8K79GGrTKqoLjV816khut29tl8VtfUo+YZ8So4of2cGw5McvQ4j/JB4bjsohSjZWBBTCLPbAeu4QoLyvE1jVLleRyAUJxrQwIDAQAB
#privateKey: MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAL6HvRfG70vblLDwz2fLDiDx3pgsPnpGaIKtTiucZqZL2IRKXr15IEEXYhHmA36QE9KJCurzgkEsnwrv0YatMqqguNXzXqSG63b22XxW19Sj5hnxKjih/ZwbDkxy9DiP8kHhuOyiFKNlYEFMIs9sB67hCgvK8TWNUuV5HIBQnGtDAgMBAAECgYA5p4qVYNn1qv8OIfipEF14o6g3hR/s0VR7wqSmdr/rL4VX1sdfb4FOoRxIjUFecYvGCDk5CrHONgn0fch6B/wN9qBk1Yjs/P0m74tVIL9tITm0l1YFkbU/mmaOQpCPA+qD6Y3EaGmvQfusq3TVKJzbJLuW6g23/NNiLk5/2BStKQJBAPOxDnvnEeMbEsNuqzsDlDVsBXlP+SsFZ88ZyIarxg3LWX04nW/WJ40A1iq7V79lOxJrnibTYz+Okbp+KGiRo7kCQQDIJ02IDtSzmYEdKmFrzfrHyCKW/lKZV2pOFUGdl/OIINsVL/9+yrPzcXnRp2I6JzCXDnsYu4OrZVGPgXVF1jzbAkEA5o7syjNLjBgQP5DUNmhjb8u8vhL5Bkf9+EZHn4qjPmfXSg8nfSkbkF9rQVCwa2fmZL4nCkrTSs2jeNNlfdHVGQJBAKRiazHghF7RJxKOGR8SN/JW89mxHKOmAMAKgy5seu4Flglrt1oqHutE+njvESSTxTt7ACyK7RQajYbgGzH1R1sCQQCylpMLxwL8PIPdlC5r5mwyHy5TsgkaU8Ft7ZBxFLu8cA0XyKfwNto2RrfVpPGvwc75KmOPQYS7fPKY7enYxRt0
signKey: vvv
poi:
excel:
importFilterEmptyRow: true
下面是application-mysql.yml
edi:
rule:
database: mysql
说明
application-mysql.yml会覆盖掉application.yml已存在的配置
- locations:用于设置实体类的根路径,该属性可通过扩展类JSRuleDefaultExtend进行扩展,自3.2.4版本之后允许设置有多个路径,如果多个根路径下有相同的类名,则在使用json时应使用类全限定名
- processor:用于设置自定义处理类,可通过直接在类上加@Component注解来替代配置该属性
- database:目前支持的数据库分别是postgresql、mysql、oracle,kingbase,可选择对应的数据库类型,默认为mysql
- mybatis:框架内置mybatis配置文件的路径,根路径位于resources文件夹下,自定义mybatis-config.xml文件可覆盖框架内置的配置文件,你只需要将自定义文件放在resources路径下,并通过该属性来指向此文件的位置即可,文件内容可参考下面的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org/DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- <setting name="logImpl" value="STDOUT_LOGGING"/>-->
<setting name="callSettersOnNulls" value="true"/>
</settings>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="pageSizeZero" value="true"/>
</plugin>
</plugins>
</configuration>
它看上去和我们平时使用的mybatis配置文件一模一样,甚至包括pageHelper插件,只不过这里配置的是框架内置的mybatis
- message:用于配制国际化文件,应用框架内置两种语言文件,分别为/rule-message/english.properties以及/rule-message/chinese.properties,默认为english,如果需要自定义日志的内容或语言可将后缀名为properties的文件放入resources目录下,并以/符号开头配置该属性指向自定义的国际化文件
- dataSourceBean:针对个别特殊情况下多数据源时指定其中一个数据源的场景,该值为最终指定的DataSource的spring bean的名称(4.0版本开始支持)
- open.superProp:配置实体类时如果实体类有父类,则是否将父类的字段一起加入到缓存中,默认为false
- open.replenishColumns:该配置只针对mysql数据库,它表示是否补全缺失的列为null值,mysql批量插入时如果行数据之间的列数不一致则将会导致数据库报错,配置为true则会保证数据列的一致性,缺失的列会以null的形式加入到行数据中,默认为false
- close.engineController:是否关闭内置Controller,默认false,表示开启,该属性可在自定义Controller后进行关闭,避免产生多个处理请求的接口
- close.models:用于禁用某些插件,当你认为某些插件不需要使用时可通过该属性来禁用,只需填入插件的全限定类名即可,多个插件可以用逗号进行分割,如下
edi:
rule:
close:
models: test.business.rule.model.JSRuleGetCustomModel,edi.rule.model.JSRuleGet
- config.dateFormat:用于配置日期格式,凡是日期格式的字符串会在后端自动转化为日期类型进行处理,这包括插入数据时,查询日期区间时,以及断言里判断时间范围等,配置多个日期格式时需用逗号分割开,未配置该属性时则采用默认格式,系统默认日期格式如下
dateFormat: yyyy-MM-dd,yyyy-MM-dd HH:mm:ss
- config.calculateScale:使用add插件的calculate属性进行除法计算时默认保留的小数位
- config.calculateMode:使用add插件的calculate属性进行除法计算时默认的舍入方案,默认四舍五入
- http.connectTimeout:连接超时配置,参考SimpleClientHttpRequestFactory
- http.readTimeout:读取超时配置,参考SimpleClientHttpRequestFactory
- http.headSign:开启安全模式后请求时应携带签名文本,该属性为request请求头中签名文本的属性名,如果security.type属性不为空并且此次请求为request请求,则此时该属性不能为空
- http.headArgs:该属性为request请求头中全局参数的属性名,它是一个可转化为JSRuleGlobalArgs对象的json字符串,其中的sign属性代表签名文本,它可代替http.headSign的配置
- poi.excel.importFilterEmptyRow:在使用导入插件时是否启用过滤器,默认为false,过滤器只会对空的数据行进行过滤
- security(since 4.1):安全模式,目前框架内置的安全模式分为两种,一种是sm2,另一种是rsa
- security.type(since 4.1):安全模式类型,该属性存在时则表示启动安全模式,可参考JSRuleSecurityEnum枚举,值为sm2时表示启用sm2安全模式
- security.publicKey(since 4.1):公钥,当security.type开启安全模式时有效,公钥和私钥任何一个为空时都将重新自动生成秘钥对儿
- security.privateKey(since 4.1):私钥,当security.type开启安全模式时有效,公钥和私钥任何一个为空时都将重新自动生成秘钥对儿
- security.signKey(since 4.1):开启安全模式后如果还需要后台配置签名秘钥用于加盐处理,此时可配置该属性,该属性可以为空,但不建议为空。验签的过程首先会将json字符串进行加密,之后用加密后的密文再与该签名秘钥组合,最后再与签名文本进行对比验证
动态定义
动态定义是指请求时在json中临时定义的,并能够临时更改原有框架配置的一种手段,可以参考JSRuleDefinition这个类来查看都有哪些属性可以定义,仅在当前请求时有效。除了viewParams和fieldsDesensitized属性,这里新增加了一个config属性,它对应的是系统可配置的程序参数,该属性后续可能会加入更多可定义的动态配置,这里先以如下几个参数进行说明
- @calculateScale:使用add插件并进行除法运算时保留的小数位,int类型
-
@calculateMode:使用add插件并进行除法运算时小数位的舍入方案,默认为四舍五入
下面展示一个例子
"define":{
"fd":{"imgUrl":{"regex":"[1-9]+","replaced":"!"}},
"vp":{"CategoryView":["#$length(kkk)","4"]},
"config":{"calculateScale":4,"calculateMode":4}
}
上面的fd是脱敏配置(具体可参考脱敏配置篇章),vp是视图配置(具体可参考视图配置篇章),config对应的是edi.rule.config