本节是对demo的boot工程的application-*.yml
文件关于oinone相关配置的扩充讲解,大家可以先通读留个影响,以备不时之需
在基础入门的模块一章中大家构建,并通过启动前后应用,直观地感受到我们自己建的demo模块。在上述过程中想必大家都了解到我们oinone的boot工程是专门用来做应用启动管理,它完全没有任何业务逻辑,它只决定启动哪些模块、启动方式、以及相关配置。它跟Spring Boot的一个普通工程没有什么差异。所有我们只要看application-*.yml
文件,oinone提供了哪些特殊配置就能窥探一二。
这里主要介绍pamirs路径下的核心以及常用的配置项
一、pamirs.boot
-
pamirs.boot.init
-
描述:启动加载程序,是否启动元数据、业务数据和基础设施的加载与更新程序,在应用启动时同时对模块进行生命周期管理
-
true ##标准版,只支持true
-
-
pamirs.boot.sync
-
描述:同步执行加载程序,启动时对模块进行生命周期管理采用同步方式
-
true ##标准版,只支持true
-
-
pamirs.boot.modules
a. 描述:启动模块列表。这里只有base模块是必须的。为了匹配我们的前端模版,在demo的例子中加入了其他几个通用业务模块。当然这些通用业务模块也是可以大大降低大家的开发难度以及提升业务系统的设计质量
b. – base #oinone的基础模块
c. – common #oinone的一些基础辅助功能
d. – sequence #序列的能力
e. – resource #基础资源如
f. – user #基础用户
g. – auth #权限
h. – message #消息
i. – international #国际化
j. – business #商业关系
k. – file #文件,demo里没有默认加入,如果要开发导入导出相关功能,可以对应引入改模块
l. – …… 还有很多通用业务模块以及这些模块的详细介绍,我们在介绍第六章【oinone的通用能力】的章节去展开
-
pamirs.boot.mode
ⅰ. dev:不走缓存,可以直接修改元数据。特别是我们在说页面设计的时候,可以修改base_view表直接生效不需要重启系统
配置举例
pamirs:
boot:
init: true
sync: true
modules:
- base
- common
- sequence
- resource
- user
- auth
- message
- international
- business
- demo_core
二、pamirs.boot.profile与pamirs.boot.options
pamirs.boot.option, 在pamirs.boot.options中可以自定义可选项,也可以根据pamirs.boot.profile属性来指定这些可选项,pamirs.boot.profile属性的默认值为CUSTOMIZE。只有pamirs.boot.profile=CUSTOMIZE时,才能在pamirs.boot.options中自定义可选项。
可选项 | 说明 | 默认值 | AUTO | READONLY | PACKAGE | DDL |
---|---|---|---|---|---|---|
reloadModule | 是否加载存储在数据库中的模块信息 | false | true | true | true | true |
checkModule | 校验依赖模块是否安装 | false | true | true | true | true |
loadMeta | 是否扫描包读取模块元数据 | true | true | false | true | true |
reloadMeta | 是否加载存储在数据库中元数据 | false | true | true | true | true |
computeMeta | 是否重算元数据 | true | true | false | true | true |
editMeta | 编辑元数据,是否支持编程式编辑元数据 | true | true | false | true | true |
diffMeta | 差量减计算元数据 | false | true | false | true | false |
refreshSessionMeta | 刷新元数据缓存 | true | true | true | true | true |
rebuildHttpApi | 刷新重建前后端协议 | true | true | true | false | false |
diffTable | 差量追踪表结构变更 | false | true | false | true | false |
rebuildTable | 更新重建表结构 | true | true | false | true | false |
printDDL | 打印重建表结构DDL | false | false | false | false | true |
publishService | 发布服务,是否发布远程服务 | true | true | true | false | false |
updateModule | 分布式模块管理 | false | true | false | true | false |
updateMeta | 初始化与更新元数据,是否将元数据的变更写入数据库 | false | true | false | true | false |
updateData | 初始化与更新内置业务数据,是否将内置业务数据的变更写入数据库 | true | true | false | true | false |
params | 扩展参数 | 可自定义 | 可自定义 | 可自定义 | 可自定义 | 可自定义 |
可以在启动日志中可查看当前服务启动可选项。
三、pamirs.meta
-
pamirs.meta.metaPackages
- 描述:自定义元模型的所在包路径。标准版只能是pro.shushi.pamirs.trigger.model
-
配置举例
pamirs:
meta:
metaPackages:
- pro.shushi.pamirs.trigger.model
四、pamirs.framework
- pamirs.framework.gateway #graphql的可选项配置
apamirs.framework.gateway.show-doc #是否对外提供gql的scheme文档查询能力,在3.2.1【构建第一个Module】一文中“DemoMoudel的启动”的部分之所以可以用Insomnia开查看后端的文档,就是这里要配置为true
bpamirs.framework.gateway.statistics #用于收集DataLoader执行过程中的状态,比如缓存命中多少次,已经load了多少个对象,有多少次error等
-
pamirs.framework.hook
-
pamirs.framework.hook.ignoreAll #默认为false,为true忽略掉所有hook函数
-
pamirs.framework.hook.excludes #排除掉部分hook函数
-
-
pamirs.framework.data #这个经常会使用到,大家一定要了解
-
pamirs.framework.data.default-ds-key #模块的默认数据库key,对应pamirs.datasource配置
-
pamirs.framework.data.ds-map #为模块指定数据库key,对应pamirs.datasource配置。在demo中我们如果要为demo_core这个模块配置独立数据库就可以在这里配置如 demo_core: demo,并在pamirs.datasource配置key为demo的数据源
-
-
pamirs.framework.system
-
pamirs.framework.system.system-ds-key #元数据系统对应的数据源,对应pamirs.datasource配置
-
pamirs.framework.system.system-models #视为元数据模型,一起放到system-ds-key库
-
-
配置举例
pamirs:
framework:
system:
system-ds-key: base
system-models:
- base.WorkerNode
data:
default-ds-key: pamirs
ds-map:
base: base
gateway:
statistics: true
show-doc: true
#hook 如下配置
#hook:
#excludes:
#- pro.shushi.pamirs.core.common.hook.QueryPageHook4TreeAfter
#- pro.shushi.pamirs.user.api.hook.UserQueryPageHookAfter
#- pro.shushi.pamirs.user.api.hook.UserQueryOneHookAfter
五、pamirs.dialect.ds
-
描述:pamirs.datasource中数据源的方言信息,以key为对应。
-
子参数有:type(默认:MySQL),version(默认:8.0),majorVersion(默认:8)
-
配置举例
pamirs:
dialect: #MySQL8.0可不配置
ds:
base: # pamirs.datasource中数据源的方言信息,以key为对应
type: MySQL
version: 8.0
majorVersion: 8
pamirs: # pamirs.datasource中数据源的方言信息,以key为对应
type: MySQL
version: 8.0
majorVersion: 8
六、pamirs.datasource
-
描述:安装模块所需要的数据源配置
-
配置举例
pamirs:
datasource:
pamirs:
driverClassName: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/demo?useSSL=false&allowPublicKeyRetrieval=true&useServerPrepStmts=true&cachePrepStmts=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
username: root
password: oinone
initialSize: 5
maxActive: 200
minIdle: 5
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
asyncInit: true
base:
driverClassName: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/demo_base?useSSL=false&allowPublicKeyRetrieval=true&useServerPrepStmts=true&cachePrepStmts=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
username: root
password: oinone
initialSize: 5
maxActive: 200
minIdle: 5
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
asyncInit: true
七、pamirs.sharding
-
描述oinone的分库分表配置,当使用pamirs-trigger-bridge-tbschedule工程开启内置schedule功能时必须配置。
-
配置举例 – 参考4.1.24【框架之分库分表】一文。
pamirs:
sharding:
define:
data-sources:
ds: pamirs
pamirsSharding: pamirs #申明pamirsSharding库对应的pamirs数据源
testShardingDs: #申明testShardingDs库对应的testShardingDs_0\1数据源
- testShardingDs_0
- testShardingDs_1
models:
"[trigger.PamirsSchedule]":
tables: 0..13
"[demo.ShardingModel]":
tables: 0..7
table-separator: _
"[demo.ShardingModel2]":
ds-nodes: 0..1 #申明testShardingDs库对应的建库规则
ds-separator: _
tables: 0..7
table-separator: _
rule:
pamirsSharding: #配置pamirsSharding库的分库分表规则
actual-ds:
- pamirs #申明pamirsSharding库对应的pamirs数据源
sharding-rules:
# Configure sharding rule,以下配置跟sharding-jdbc配置一致
- tables:
demo_core_sharding_model:
actualDataNodes: pamirs.demo_core_sharding_model_${0..7}
tableStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: table_inline
shardingAlgorithms:
table_inline:
type: INLINE
props:
algorithm-expression: demo_core_sharding_model_${(Long.valueOf(user_id) % 8)}
props:
sql.show: true
testShardingDs: #配置testShardingDs库的分库分表规则
actual-ds: #申明testShardingDs库对应的pamirs数据源
- testShardingDs_0
- testShardingDs_1
sharding-rules:
# Configure sharding rule,以下配置跟sharding-jdbc配置一致
- tables:
demo_core_sharding_model2:
actualDataNodes: testShardingDs_${0..1}.demo_core_sharding_model2_${0..7}
databaseStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: ds_inline
tableStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: table_inline
shardingAlgorithms:
table_inline:
type: INLINE
props:
algorithm-expression: demo_core_sharding_model2_${(Long.valueOf(user_id) % 8)}
ds_inline:
type: INLINE
props:
algorithm-expression: testShardingDs_${(Long.valueOf(user_id) % 2)}
props:
sql.show: true
八、pamirs.mapper
- 库配置:可以通过YAML的“pamirs.mapper.<global或者ds>”配置项进行库配置。如果未配置,系统会采用默认值
配置项 | 默认值 | 描述 |
---|---|---|
databaseFormat | %s |
库名格式化 |
tableFormat | %s |
表名格式化 |
tablePattern | %s | 动态表名表达式 |
- 表配置:可以通过YAML的“pamirs.mapper.<global或者ds>.table-info”配置项或者@Model.Persistence注解进行表配置。注解优先级大于YAML配置文件配置。如果未配置,系统会采用默认值
配置项 | 默认值 | 描述 |
---|---|---|
databaseFormat | %s |
库名格式化 |
tableFormat | %s |
表名格式化 |
tablePattern | %s | 动态表名表达式 |
- 配置举例
pamirs:
mapper:
static-model-config-locations:
- pro.shushi.pamirs
batch: collectionCommit #batch方法的批量提交模式
batch-config:
"[base.Field]":
write: 2000
"[base.Function]":
read: 500
write: 2000
global:
table-info:
logic-delete: true
logic-delete-column: is_deleted
logic-delete-value: REPLACE(unix_timestamp(NOW(6)),'.','')
logic-not-delete-value: 0
optimistic-locker: false
optimistic-locker-column: opt_version
key-generator: DISTRIBUTION
table-pattern: '${module}_%s'
#可以为指定数据配置
#ds:
# pamirs:
# table-info:
# logic-delete: true
# logic-delete-column: is_deleted
# logic-delete-value: REPLACE(unix_timestamp(NOW(6)),'.','')
# logic-not-delete-value: 0
# optimistic-locker: false
# optimistic-locker-column: opt_version
# key-generator: DISTRIBUTION
# table-pattern: '${module}_%s'
九、pamirs.persistence
-
描述:自动建库,建表
-
配置举例
pamirs:
persistence:
global:
auto-create-database: true
auto-create-table: true
十、pamirs.plus
a. 描述mybatisplus的代理配置
b. 配置举例
pamirs:
plus:
configuration:
map-underscore-to-camel-case: false
cache-enabled: false
十一、pamirs.event
a. pamirs.event.enabled:启用RocketMQ功能,不启用的情况下无法使用任何功能,使用详见4.1.21【框架之分布式消息】一文。
b. pamirs.event.rocket-mq.namesrv-addr:RocketMQ连接地址字符串
c. pamirs.event.rocket-mq.aliyun : 阿里云版本适配
d. pamirs.event.schedule.enabled:启动异步任务工,不启用的情况下无法使用任何功能
e. 配置举例
pamirs:
event:
enabled: false
schedule:
enabled: false
ownSign: base
auto-init: true
auto-create-config-file: true
rocket-mq:
namesrv-addr: 127.0.0.1:9876
# 标识发送消息和消费消息的机器的IP地址,默认为RemotingUtil.getLocalAddress()
client-ip:
# 标识发送消息和消费消息的机器的实例名称地址,默认为DEFAULT
instance-name:
# 标识发送消息和消费消息的机器的实例ID,无默认值
namespace:
# 为每一个topic添加一个固定前缀
topic-prefix:
# 是否启用vip netty通道以发送消息
vip-channel-enabled: false
# 是否启用消息轨迹追踪(该属性对于阿里云MQ无效)
enable-trace: false
# 消息轨迹追踪的topic名称
trace-topic-name:
# Pamirs Event工厂
event-factory: pro.shushi.pamirs.framework.connectors.event.rocketmq.DefaultRocketMQEventFactory
# acl配置
accounts:
- accessKey: RocketMQ
secretKey: 12345678
# 阿里云MQ 相关配置
aliyun:
# 使用阿里云MQ
enabled: false
# 阿里云MQ AccessKey
access-key:
# 阿里云MQ SecretKey
secret-key:
# 阿里云MQ InstanceId
instance-id:
# 阿里云MQ GroupId
group-id:
十二、pamirs.auth
-
pamirs.auth.modelFilter:配置模型所有的query方法不需要过权限控制 #下个版本作废,不建议使用
-
pamirs.auth.funFilter:配置模型的特定query方法不需要过权限控制
-
配置举例
pamirs:
auth:
model-filter:
- user.PamirsUserTransient
- auth.ResourcePermission
- auth.AuthGroup
- auth.AuthRole
- base.View
- resource.ResourceCountry
- pamirs.web.WebMenu
- pamirs.web.WebRenderTransient
- pamirs.message.MessageCenter
- resource.major.ResourceMajorConfig
fun-filter:
- namespace: user.PamirsUserTransient
fun: login #登录
- namespace: user.PamirsUserTransient
fun: loginByVerificationCode #手机号验证码登录
- namespace: user.PamirsUserTransient
fun: loginVerificationCode #手机号登录验证码
- namespace: user.PamirsUserTransient
fun: signUpVerificationCode #手机号注册验证码
十三、pamirs.file
-
描述:导入导出相关配置,使用详见6.1【文件导入导出】一文
-
配置举例
pamirs:
file:
auto-upload-logo: false
import-property:
default-each-import: false # 默认逐行导入
max-error-length: 100 # 默认最大收集错误行数
export-property:
default-clear-export-style: false # 默认使用csv导出
csv-max-support-length: 1000000 # csv导出最大支持1000000行
#文件导入导出还依赖CDN相关配置
cdn:
oss:
name: 阿里云
type: OSS
bucket: pamirs
uploadUrl: oss-cn-hangzhou.aliyuncs.com
downloadUrl: oss-cn-hangzhou.aliyuncs.com
accessKeyId: #自行修改值
accessKeySecret: #自行修改值
mainDir: upload/demo/test/
validTime: 3600000
timeout: 600000
active: true
referer:
localFolderUrl:
十四、pamirs.channel
-
描述:
-
配置举例
pamris:
channel:
zkServers: 127.0.0.1:2181
十五、pamirs.zookeeper
-
描述:zk配置的代理
-
配置举例
pamris:
zookeeper:
zkConnectString: 127.0.0.1:2181
zkSessionTimeout: 60000
rootPath: /demo
十六、pamirs.eip
-
描述:集成相关配置,使用详见集成平台一节
-
配置举例
pamirs:
eip:
open-api:
enabled: false
standalone:
host: 127.0.0.1
port: 8081
aes-key:
routes:
pamirs:
host: 127.0.0.1
port: 8081
aes-key:
高德地图接口的key配置
pamirs:
eip:
map:
gd:
key: xxxxxx
十七、pamirs.elastic
a. 描述:es搜索引擎地址 ,使用详见4.1.25【框架之搜索引擎】一节
b. 配置举例
pamirs:
elastic:
url: 127.0.0.1:9200
十八、pamirs.load
oinone的默认模式下元数据都是以DB为准,当A模块依赖B模块,A与B模块不在没有部署在一起同时元数据的Base库也不是一个,那么A的元数据库怎么没有B模型,会导致系统出现模型定义找不到的错误。那么则需要A启动内存元数据模式,因为在A的元数据计算的时,因为A依赖B模块,同时有B的接口包,在内存中会扫描B的模型。所以我们要启动内存模式。应对分布式开发场景设计,更多请详见4.4【oinone的分布式体验进阶】
pamirs:
load:
sessionMode: true
Oinone社区 作者:史, 昂原创文章,如若转载,请注明出处:https://doc.oinone.top/oio4/9276.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验