全棧低碼設(shè)計開源框架 json-script-rule 配置說明

配置說明

簡述

本篇主要講述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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容