# lz.framework **Repository Path**: micro-project/lz.framework ## Basic Information - **Project Name**: lz.framework - **Description**: JAVA基础研发框架,彻底解放业务人员,提升研发效率 - **Primary Language**: Java - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-10-18 - **Last Updated**: 2021-10-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README lz.Framework =================================== 专注业务开发、提升业务开发效率 ----------------------------------- 基础开发框架(作者:397754531,到大叔碗里来),功能如下: 开发示例 #debug=true logging.level.root=info #logging.level.org.mybatis.spring.SqlSessionFactoryBean=error #spring.rabbitmq.host=172.17.100.40 #spring.rabbitmq.virtual-host=/ #spring.rabbitmq.username=admin #spring.rabbitmq.password=123456 #spring.rabbitmq.template.retry.enabled=true #spring.rabbitmq.template.retry.initial-interval=2 #cnvex.event.enabled=false #cnvex.event.remote-event.enabled=true #cnvex.event.remote-event.binder-type=kafka #cnvex.event.remote-event.publish-event-topics[0]=cn.cnvex.framework.demo.event.TestEvent cnvex.data.multiple.druid.sysbase.url=jdbc:mysql://127.0.0.1:3306/sys_base?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 cnvex.data.multiple.druid.sysbase.driver-class-name=com.mysql.cj.jdbc.Driver cnvex.data.multiple.druid.sysbase.username=root cnvex.data.multiple.druid.sysbase.password=123456 cnvex.data.multiple.druid.sysbase.min-idle=1 cnvex.data.multiple.druid.sysbase.initial-size=1 cnvex.data.multiple.generic.demo.url= jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 cnvex.data.multiple.generic.demo.username=root cnvex.data.multiple.generic.demo.password=123456 cnvex.data.multiple.generic.demo.driver-class-name=com.mysql.cj.jdbc.Driver cnvex.data.multiple.generic.demo.type=com.alibaba.druid.pool.DruidDataSource cnvex.data.multiple.generic.demo.properties.min-idle=1 cnvex.data.multiple.generic.demo.properties.initial-size=1 cnvex.data.multiple.data-source-name-alias.security=sysbase cnvex.data.multiple.data-source-name-alias.config=sysbase cnvex.data.multiple.data-source-name-alias.scheduler=sysbase cnvex.data.multiple.data-source-name-alias.flow=sysbase spring.datasource.url= jdbc:mysql://127.0.0.1:3306/demo2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.min-idle=5 spring.datasource.druid.initial-size=1 #spring.data.jpa.repositories.enabled=true spring.jpa.properties.hibernate.hbm2ddl.auto=none #cnvex.security.enabled=true cnvex.security.boss-manager-enabled=true #cnvex.security.spring-security-enabled=true #cnvex.security.identity-cache-type=spring-cache #cnvex.config.enabled=false cnvex.config.app-no=config-center #cnvex.config.app-ver=0.0.0.1 cnvex.config.client-config-enabled=false cnvex.config.boss-manager-enabled=true cnvex.config.server-manager-enabled=true #cnvex.config.config-manager-type=zk cnvex.config.config-manager-type=nacos cnvex.config.zk.server-addr=127.0.0.1:2181 cnvex.config.nacos.server-addr=127.0.0.1:8848 #cnvex.config.db.data-source.url=jdbc:mysql://127.0.0.1:3306/demo #cnvex.config.db.data-source.username=root #cnvex.config.db.data-source.password=123456 #cnvex.config.db.data-source.driver-class-name=com.mysql.cj.jdbc.Driver cnvex.config.db.config-check-period-ms=5000 cnvex.web.title=\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf #cnvex.web.jsp-enabled=true #cnvex.web.api.swagger-enabled=true #cnvex.web.druid-state.enabled=true cnvex.remote.enabled=false #cnvex.remote.dubbo.enabled=false dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.port=20881 dubbo.protocol.name=dubbo dubbo.provider.timeout=30000 dubbo.consumer.timeout=30000 #cnvex.remote.eureka.enabled=true #eureka.client.serviceUrl.defaultZone=http://localhost:8884/eureka/ #feign.hystrix.enabled=false cnvex.scheduler.enabled=false cnvex.scheduler.boss-manager-enabled=true cnvex.scheduler.scheduler-server-enabled=false #cnvex.flow.activiti.boss-manager-enabled=true #spring.redis.host=127.0.0.1 #spring.redis.port=6379 #spring.redis.password=123456 #cnvex.cache.enabled=false #spring.cache.type=redis #cnvex.cache.multiple-caffeine.cache_security.spec=expireAfterAccess=10s #cnvex.cache.multiple-redis.cache_security.time-to-live=10s #cnvex.cache.multiple-redis.user-cache.time-to-live=30s #cnvex.cache.multiple-redis.user-cache.key-prefix=fkdemo- #cnvex.cache.multiple-redis.user-cache.use-key-prefix=false #cnvex.cache.multiple-redis.cache_security.key-prefix=security-center1_ #cnvex.cache.multiple-redis.cache_security_header.key-prefix=security-center1_ cnvex.resources.boss-manager-enabled=true #cnvex.resources.authorize.users[0].login-name=ofile_user #cnvex.resources.authorize.users[0].password=123456 # 相关组件说明 ## framework.core 说明:封装Spring Boot 启动及框架初始化,提供应用名、启动端口、环境配置名快速设置,并且强制启用单配置文件模式验证 ### 示例 hosts设置看图片:199.232.68.133 raw.githubusercontent.com 启动配置: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200422104831.png) WEB容器启动配置:![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/202004221048312.png) 框架基本运行数据工具:Apps。 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200422120026.png) 基本对象:CnvexResult、CnvexException、JsonSerializerUtils和常用工具类 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/202004221342113.png) ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/202004221344222.png) ## framework.data 说明:封装Druid数据源配置,支持多数据源配置(数据访问层接口可以指定使用配置的数据源,使用@DataSourceName属性指定),JPA(Hibernate),集成mybatis 框架提供EntityMybatisDao、EntityJpaDao基类来实现业务数据访问层,提供EntityService服务层基类来封装常用的数据访问方法 ### 示例 服务层通用接口:EntityService ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200525092151.png) 数据访问层、业务访问层、实体基本结构如下: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200422143426.png) 数据访问层写法: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200525093631.png) 业务访问层写法: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200525094445.png) 多数据源事务自动使用方式: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200521180716.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200521181045.png) 多数据源事务手动使用方式 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200422164548.png) 使用示例 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200525101047.png) ## framework.web 说明:封装统一的JS框架(AdminLTE 3、easyui、H-ui、H+,框架生成页面样式使用的是H+),提供接口文档管理(swagger),接口版本路由,封装实体增、删、改、查Controller基类(WebViewEntityController>) ### 示例 框架结构说明: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423093249.png) 框架提供根据业务表自动生成全套代码 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423091921.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423093622.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423093744.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423093831.png) 配合权限系统,可以放到统一BOSS管理系统里面管理页面功能,单表操作无需一行代码即可完成功能,适合快速开发,多表业务视图也只需要重写框架的数据访问接口即可 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423094353.png) 接口文档管理(swagger),文档管理启用后系统会在根路径添加文档管理首页,"/" ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423135613.png) 接口版本路由功能,提供访问地址不变,请求头或者参数传入版本号即可由框架路由到对应的方法 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423140320.png) ## framework.security 说明:提供完整Boss管理框架,框架提供@SecurityBossManagerAuthorize方式来自动识别管理功能,封装统一权限认证模型,可用于运营管理系统权限管理,也可以用API接口访问权限管理。 ### 示例 权限接口:Authorization(统一授权,管理授权码及权限的整个生命周期),AuthorizationManager(管理权限用户,默认实现Web授权传递的方案,实现权限统一管理) ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423101337.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423101412.png) Boss管理功能自动识别,并加入权限菜单管理 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423102456.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423115451.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423115602.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423115832.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423134155.png) Spring Security整合,支持权限表达式拦截访问。角色和权限数据通用。 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200706095505.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200706095605.png) ## framework.remote 说明:集成spring cloud微服务相关组件(Eureka、Ribbon、Hystrix、Feign),集成dubbo,集成spring sleuth + zipkin分布式链路跟踪,支持dubbo、eureka、controller全程链路跟踪 ### 示例 dubbo使用方式没有任何变化,spring cloud需要添加启用属性,默认不启用spring sleuth,dubbo默认开启简单跟踪。 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200423143807.png) dubbo简单跟踪 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200424144901.png) spring sleuth + zipkin跟踪,dubbo、eureka、混合调用都支持 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200424152821.png) ## framework.config 说明:统一配置管理,兼容@Value(动态刷新需配合@RefreshScope),数据动态更新必须使用接口注册监听或后台配置为自动刷新项,数据变化支持数据库轮询、ZK、Nacos。 ### 示例 配置接口及使用方式: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200424173348.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200426095318.png) 配置后台管理使用方式:我们的配置是基于配置应用,应用的版本,环境名称,配置项KEY,这四个维度来定位一个配置,所以我们后台也是围绕这四个数据来维护的。 支持快速发布: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200929102025.png) 正常维护配置 第一步,配置应用管理: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200426103824.png) 第二步,配置数据项:每个数据项可以建立版本机制来隔离不同版本的数据项(key相同,值不相同的情况,以便现实一个数据项的历史版本值) ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200426104625.png) 第三步,配置环境:将添加的配置项分配到对应的环境属性上。 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200426105522.png) 第三步,配置应用:将各种环境的配置项分配到应用的各个版本上。 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200426110223.png) 第四步:发布配置:将需要给客户端使用的配置选定出来,支持全量发布和增量发布,发布渠道支持db,zk,nacos,默认开启db方式。支持发布历史管理,记录发布名称、发布人等信息,也支持紧急使用历史的任何版本。 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20201010102857.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20201010102553.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20201010105815.png) ## framework.event 说明:提供事件总线框架,提供本地事件总线方式和分布式事件总线方式(需要消息组件支持)。 ### 示例 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200527094638.png) 分布式事件总线默认关闭,需要显式开启使用,默认RABBIT,发布事件需要先配置发布事件的参数类型。 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200527093641.png) ## framework.flow 说明:1、微服务执行流程处理框架,按照定义的节点顺序自动执行,支持流程重试。框架提供流程定义基类和节点处理基类,业务只需关注处理结果。 2、集成Activiti7流程框架,集成web版流程设计器,支持导出为BPMN2.0流程定义文件 ### 示例 流程定义: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200528120245.png) 流程管理接口: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200528120745.png) 流程定义管理(Activiti): ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200612172306.png) 流程Web设计器,支持全屏设计 ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200612172403.png) ## framework.cache 说明:集成Spring cache,优化Caffeine(单机)、Redis(多机器),支持根据cache name配置不同的缓存策略 ### 示例 使用方式和Spring cache一致,1、接口方式:CacheManager接口。2、注释方式:@Cacheable、@CacheEvict、@CachePut 配置不同的缓存策略: #cnvex.cache.multiple-caffeine.cache_security.spec=expireAfterAccess=10s #cnvex.cache.multiple-redis.cache_security.time-to-live=10s #cnvex.cache.multiple-redis.user-cache.time-to-live=30s ## framework.resources 说明:统一资源管理,提供资源文件管理和资源内容管理(维护按分类存放的键值对文本),资源文件管理的存储默认实现有服务器文件管理(单机)和阿里云OSS文件管理(多机器),提供公共、私有文件管理方式,提供Boss管理功能来维护资源内容及资源文件。 ### 示例 资源操作接口: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200902154706.png) 阿里云Oss存储方式上传地址:/aliOss/upload,/aliOss/batchUpload,请求方式:POST,参数:ofile(文件),ofile_class_code(分类),ofile_access_type(访问方式),ofile_memo(备注) 服务器文件存储方式上传地址:/ofile/upload,/ofile/batchUpload,请求方式:POST,参数:ofile(文件),ofile_class_code(分类),ofile_access_type(访问方式),ofile_memo(备注) 公共文件下载地址:/files/public/download,请求方式:GET,参数:resNo(资源编号) 私有文件下载地址:/files/private/download,请求方式:GET,参数:resNo(资源编号) 私有文件下载授权地址:/ofile/authorize,请求方式:POST,参数:user_name(用户名),password(密码),expired(过期时间,单位:毫秒),授权成功后返回token(授权码,默认已写入cookie),访问私有文件带回token(cookie自动带回,或者请求头、请求参数中带回,参数名:token,)。 私有文件下载授权跳转地址:/ofile/authorizeRedirect,请求方式:GET,参数:user_name(用户名),password(密码),expired(过期时间,单位:毫秒),redirect_uri(跳转地址),授权成功后跳转到指定地址,(参数格式:/demo?token={TOKEN},授权码,默认已写入cookie),访问私有文件带回token(cookie自动带回,或者请求头、请求参数中带回,参数名:token,)。 ## framework.sms 说明:统一手机短信发送管理,默认提供阿里云、容联云短信实现,提供短信发送控制功能。对发送频率,是否允许发送等操作进行拦截 ### 示例 统一发送接口: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200908155129.png) 短信管理: ![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200908155737.png)![image](https://gitee.com/www.gangzaicd.com/lz.framework/raw/master/docs/imgs/20200908155827.png)