配置說明
簡述
本篇主要講述spring的application文件的配置,與model包類型,配置文件也有一個相對應(yīng)的類,它就是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:用于設(shè)置實體類的根路徑,該屬性可通過擴展類JSRuleDefaultExtend進行擴展,自3.2.4版本之后允許設(shè)置有多個路徑,如果多個根路徑下有相同的類名,則在使用json時應(yīng)使用類全限定名
- processor:用于設(shè)置自定義處理類,可通過直接在類上加@Component注解來替代配置該屬性
- database:目前支持的數(shù)據(jù)庫分別是postgresql、mysql、oracle,kingbase,可選擇對應(yīng)的數(shù)據(jù)庫類型,默認(rèn)為mysql
- mybatis:框架內(nèi)置mybatis配置文件的路徑,根路徑位于resources文件夾下,自定義mybatis-config.xml文件可覆蓋框架內(nèi)置的配置文件,你只需要將自定義文件放在resources路徑下,并通過該屬性來指向此文件的位置即可,文件內(nèi)容可參考下面的
<?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插件,只不過這里配置的是框架內(nèi)置的mybatis
- message:用于配制國際化文件,應(yīng)用框架內(nèi)置兩種語言文件,分別為/rule-message/english.properties以及/rule-message/chinese.properties,默認(rèn)為english,如果需要自定義日志的內(nèi)容或語言可將后綴名為properties的文件放入resources目錄下,并以/符號開頭配置該屬性指向自定義的國際化文件
- dataSourceBean:針對個別特殊情況下多數(shù)據(jù)源時指定其中一個數(shù)據(jù)源的場景,該值為最終指定的DataSource的spring bean的名稱(4.0版本開始支持)
- open.superProp:配置實體類時如果實體類有父類,則是否將父類的字段一起加入到緩存中,默認(rèn)為false
- open.replenishColumns:該配置只針對mysql數(shù)據(jù)庫,它表示是否補全缺失的列為null值,mysql批量插入時如果行數(shù)據(jù)之間的列數(shù)不一致則將會導(dǎo)致數(shù)據(jù)庫報錯,配置為true則會保證數(shù)據(jù)列的一致性,缺失的列會以null的形式加入到行數(shù)據(jù)中,默認(rèn)為false
- close.engineController:是否關(guān)閉內(nèi)置Controller,默認(rèn)false,表示開啟,該屬性可在自定義Controller后進行關(guān)閉,避免產(chǎn)生多個處理請求的接口
- close.models:用于禁用某些插件,當(dāng)你認(rèn)為某些插件不需要使用時可通過該屬性來禁用,只需填入插件的全限定類名即可,多個插件可以用逗號進行分割,如下
edi:
rule:
close:
models: test.business.rule.model.JSRuleGetCustomModel,edi.rule.model.JSRuleGet
- config.dateFormat:用于配置日期格式,凡是日期格式的字符串會在后端自動轉(zhuǎn)化為日期類型進行處理,這包括插入數(shù)據(jù)時,查詢?nèi)掌趨^(qū)間時,以及斷言里判斷時間范圍等,配置多個日期格式時需用逗號分割開,未配置該屬性時則采用默認(rèn)格式,系統(tǒng)默認(rèn)日期格式如下
dateFormat: yyyy-MM-dd,yyyy-MM-dd HH:mm:ss
- config.calculateScale:使用add插件的calculate屬性進行除法計算時默認(rèn)保留的小數(shù)位
- config.calculateMode:使用add插件的calculate屬性進行除法計算時默認(rèn)的舍入方案,默認(rèn)四舍五入
- http.connectTimeout:連接超時配置,參考SimpleClientHttpRequestFactory
- http.readTimeout:讀取超時配置,參考SimpleClientHttpRequestFactory
- http.headSign:開啟安全模式后請求時應(yīng)攜帶簽名文本,該屬性為request請求頭中簽名文本的屬性名,如果security.type屬性不為空并且此次請求為request請求,則此時該屬性不能為空
- http.headArgs:該屬性為request請求頭中全局參數(shù)的屬性名,它是一個可轉(zhuǎn)化為JSRuleGlobalArgs對象的json字符串,其中的sign屬性代表簽名文本,它可代替http.headSign的配置
- poi.excel.importFilterEmptyRow:在使用導(dǎo)入插件時是否啟用過濾器,默認(rèn)為false,過濾器只會對空的數(shù)據(jù)行進行過濾
- security(since 4.1):安全模式,目前框架內(nèi)置的安全模式分為兩種,一種是sm2,另一種是rsa
- security.type(since 4.1):安全模式類型,該屬性存在時則表示啟動安全模式,可參考JSRuleSecurityEnum枚舉,值為sm2時表示啟用sm2安全模式
- security.publicKey(since 4.1):公鑰,當(dāng)security.type開啟安全模式時有效,公鑰和私鑰任何一個為空時都將重新自動生成秘鑰對兒
- security.privateKey(since 4.1):私鑰,當(dāng)security.type開啟安全模式時有效,公鑰和私鑰任何一個為空時都將重新自動生成秘鑰對兒
- security.signKey(since 4.1):開啟安全模式后如果還需要后臺配置簽名秘鑰用于加鹽處理,此時可配置該屬性,該屬性可以為空,但不建議為空。驗簽的過程首先會將json字符串進行加密,之后用加密后的密文再與該簽名秘鑰組合,最后再與簽名文本進行對比驗證
動態(tài)定義
動態(tài)定義是指請求時在json中臨時定義的,并能夠臨時更改原有框架配置的一種手段,可以參考JSRuleDefinition這個類來查看都有哪些屬性可以定義,僅在當(dāng)前請求時有效。除了viewParams和fieldsDesensitized屬性,這里新增加了一個config屬性,它對應(yīng)的是系統(tǒng)可配置的程序參數(shù),該屬性后續(xù)可能會加入更多可定義的動態(tài)配置,這里先以如下幾個參數(shù)進行說明
- @calculateScale:使用add插件并進行除法運算時保留的小數(shù)位,int類型
-
@calculateMode:使用add插件并進行除法運算時小數(shù)位的舍入方案,默認(rèn)為四舍五入
下面展示一個例子
"define":{
"fd":{"imgUrl":{"regex":"[1-9]+","replaced":"!"}},
"vp":{"CategoryView":["#$length(kkk)","4"]},
"config":{"calculateScale":4,"calculateMode":4}
}
上面的fd是脫敏配置(具體可參考脫敏配置篇章),vp是視圖配置(具體可參考視圖配置篇章),config對應(yīng)的是edi.rule.config