框架版本
<dependency>
<groupId>com.sie.mbm.mom</groupId>
<artifactId>imom-dependency</artifactId>
<version>版本</version>
</dependency>简介
imom-framework 3.X框架是以JDK21、SpringBoot3.5.5为底层环境开发的框架
参考文档
框架javadoc文档:http://doc.imom.chinasie.com:8006/imom-framework/apidocs/index.html
imom 框架由2.X升级至3.X版本升级文档:http://doc.imom.chinasie.com:8006/archives/Y9Qsko03
mybatis-flex参考文档:https://mybatis-flex.com/zh/core/multi-datasource.html
日志使用教程: http://doc.imom.chinasie.com:8006/archives/vYGgOMJe
SQL日志配置:http://doc.imom.chinasie.com:8006/archives/JQlHmjLA
打印使用教程:http://doc.imom.chinasie.com:8006/archives/gJTxjvov
架构

2. 业务功能模块
2.1 framework-common
2.1.1 模块简介
framework-common定义的是基础底层模块,用于通用内容模块的定义,大部分情况下只负责定义不负责实现,达到framework-common轻量化目的。
2.1.2 核心功能说明
2.2 framework-db
2.2.1 模块简介
数据库访问模块,支持dme、mysql、pg数据等,支持切换不同数据库。(为方便介绍,后续除了dme,都称本地数据库)
2.2.2 核心功能说明
2.2.2.1 数据操作
● 框架提供三个基类用于查询不同的数据源数据
如果业务系统需要支持查询DmeMapper、MbmMapper或DbMapper, 则 @MapperScan 扫描要配置factoryBean = DbTypeMapperFactoryBean.class
例:
@MapperScan(basePackages = {"com.sie.mbm.mom.processcontrol.**.mapper"}, factoryBean = DbTypeMapperFactoryBean.class)
● 框架支持三种方式操作数据
例:
@Mapper
public interface PassStationWinRecordMapper extends DmeMapper<PassStationWinRecord> {
/**
* 高代码查询
*
* 方法名为mybatis高代码xml中定义的方法名,或者dme中定义的高代码组件编码
*
* @param dto
* @return 列表
*/
List<PassStationWinRecord> SiePassStationWinRecordListDtl(@Param("dto") PassStationQueryDTO dto);
/**
* default组装接口
*
* @param queryWrapper 查询条件
* @return 列表
*/
default List<PassStationWinRecord> selectListByQueryCall(PassStationQueryDTO queryDTO) {
List<PassStationWinRecord> all = new ArrayList();
// 查高代码
List<PassStationWinRecord> list = SiePassStationWinRecordListDtl(queryDTO);
if(list != null) {
add.addAll(list);
}
// 查Mapper
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq(queryDTO::getMatchEnd, FlagEnum.TRUE.getEnFlag());
List<PassStationWinRecord> list2 = selectListByQuery(queryWrapper);
if(list2 != null) {
add.addAll(list2);
}
return all;
}
}
● 高代码分页,采用pagehelper分页工具
<dependency>
<groupId>com.github.pagehelper</groupId>
<dependency>PageHelper使用注意事项,当前框架已增加默认异步线程和web线程PageHelper分页线程数据自动清理,但是还无法避免极端情况下或代码不规范导致的同一线程上下文PageHelper残留问题,建议使用框架提供的分页工具
com.sie.mbm.mom.framework.db.util.PageHelpUtil#queryPage分页使用示例
Page<ApsPlanOrderAssign> page = PageHelpUtil.queryPage(1, 10, () -> apsPlanOrderAssignMapper.selectCustomer());xml文件存放规范
码目录规范
对于继承DmeMapper的类而言,为了未来切换数据库的不确定性,增加一级数据库名称目录,各数据库命名规范见:DbType
2.2.2.1 事务
IDME&MBM事务参考
2.2.3 配置说明
framework-db基于mybatis-flex进行二次开发,对于连接本地数据库的其他使用参考mybatis-flex官方文档,快速开始 - MyBatis-Flex 官方网站
2.3 framework-core
2.3.1 模块简介
framework-core是由imom-framework框架构建的应用核心模块,必须依赖,定义了web应用核心能力。
2.3.2 核心功能说明
2.3.2.1 WEB全局处理
2.3.2.2 Feign全局处理
2.3.2.3 多线程
2.3.3 配置说明
2.4 framework-oss
2.4.1 模块简介
文件存储模块,存储需要持久化的文件,支持本地磁盘存储与对象存储
2.4.2 核心功能说明
文件操作类:FileTemplate,可通过以下代码直接操作文件SDK
@Resource
private FileTemplate template
2.4.3 配置说明
2.5 framework-cache
2.5.1 模块简介
缓存模块,目前底层采用的是Redis实现
2.5.2 核心功能说明
● 通过代码操作缓存
● 通过注解操作缓存
已经集成spring-boot-starter-cache,可使用提供的缓存注解,例如:@Cacheable;使用规则见其官方文档
2.5.3 配置说明
● 关于业务的Redis配置,均使用Spring原生的Redis配置类,见RedisProperties
● 对于日志的Redis配置,增加了spring.redis.log.database配置项目,用于配置日志存储的db编号,默认是7
2.6 framework-excel
2.6.1 模块简介
Excel模块,用于实现便捷式Excel导入、导出功能;Excel底层采用easyexcel实现
2.6.2 核心功能说明
略。该模块功能未作调整
2.6.3 配置说明
● 关于业务的Redis配置,均使用Spring原生的Redis配置类,见RedisProperties
对于日志的Redis配置,增加了spring.redis.log.database配置项目,用于配置日志存储的db编号,默认是7
2.7 framework-idempotent
2.7.1 模块简介
提供接口幂等及分布式锁功能,幂等从原理上讲也是一种分布式锁,只是二者的配置不同,使用场景略有不同
2.7.2 核心功能说明
2.8 framework-sequence
2.8.1 模块简介
序号生成器,默认采用雪花算法
2.8.2 核心功能说明
Spring容器注入Sequence,调用Sequence的nextValue或nextNo方法生成序号
2.8.3 配置说明
2.9 framework-websocket
2.9.1 模块简介
支持websocket通信,支持连接自动清理、全局自动注入TTL(ThreadContextHolder)
2.9.2 核心功能说明
2.9.3 配置说明
2.10 framework-mq
2.10.1 模块介绍
该模块是个异步任务处理模块,基于redis的stream搭建的一个消息队列
开发手册详见文档:http://doc.imom.chinasie.com:8006/archives/D8qfaMzk
2.11 framework-compatible
2.11.1 模块简介
此模块是个兼容模块,用于旧框架升级新框架时,处理兼容性问题的模块,新项目,不能引入此模块
3. 框架功能模块
3.1 framework-api
3.1.1 模块简介
framework框架内部远程接口调用定义,用于imom-framework框架子模块使用的远程接口定义,framework-api下的类禁止业务代码调用,只能由框架子模块调用。
3.2 framework-apilog
3.2.1 模块简介
框架层面日志处理,包含Controller、Feign、ResTemplate日志
3.3 framework-swagger
3.3.1 模块简介
业务系统swagger文档api
3.4 framework-license
3.4.1 模块简介
处理微服务授权