# 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,到大叔碗里来),功能如下:
1. 基础方法、封装Spring boot 2.x启动框架,扩展组件初始化及各生命周期事件支持,统一日志管理
2. 统一配置管理,支持数据同步模式和监听模式,数据同步模式客户端数据和配置中心刷新保持一致。监听模式客户端启动后同步一次数据,配置中心刷新数据不会同步,必须注册监听才会同步(配置项数据可以设置为自动监听),配置优先级(配置中心->环境变量->bootstrap->application)
3. 统一数据层操作,集成JPA(Hibernate),集成mybatis,统一查询方式(框架提供eq,like,in等查询方法)
5. 多数据源配置及事务管理(支持mybatis、JPA),无缝集成数据层操作
6. 统一权限管理(应用、资源(权限)、角色模式)授权缓存支持数据库、Redis权限缓存,权限资源缓存支持本地缓存和Spring cache缓存(智能同步刷新),整合Spring security,利用Spring security管理基本的权限及拦截,如CSRF等,再由权限系统根据角色、权限拦截,默认提供功能菜单管理,支持同域或跨域集成各个模块的菜单功能
7. 集成MBassador本地事件发布订阅,支持事件处理分组,业务可以制定各种优先级来处理事件
8. 封装dubbo框架,支持Spring boot配置方式管理dubbo服务
9. 封装Web集成资源、统一jquery、图标资源、ui资源
10. 接口版本路由
11. 集成swagger2接口文档管理
12. 提供框架代理生成器,支持根据数据库表直接生成数据层、服务层、controller及freemarker页面框架
13. 集成Spring Cloud Stream,在本地事件发布订阅基础上增加分布式模式,支持通知所有订阅者和只通知一个订阅者,默认通知3次,都失败后进入失败队列,等待后续处理
14. 集成quartz,提供定时任务管理和执行,支持dubbo任务和http任务
15. 集成spring cloud微服务相关组件(Eureka、Ribbon、Hystrix、Feign),默认开启了Hystrix
16. 微服务执行流程处理框架,提供自动重试、手动重试,同时集成Activiti7流程框架,集成web版流程设计器
17. 集成spring sleuth + zipkin分布式链路跟踪,支持dubbo、eureka、controller全程链路跟踪
18. 集成Spring cache,优化Caffeine(单机)、Redis(多机器),支持根据cache name配置不同的缓存策略
19. 统一资源管理,提供资源文件管理和资源内容管理,资源文件管理的存储默认实现有服务器文件管理(单机)和阿里云OSS文件管理(多机器),提供公共、私有文件管理方式,提供Boss管理功能来维护资源内容及资源文件。
20. 统一手机短信发送管理,默认提供阿里云、容联云短信实现,提供短信发送控制功能。对发送频率,是否允许发送等操作进行拦截
21. 集成sharding-jdbc分库分表,提供多数据源配置,统一数据层操作
22. 提供分布式主键(Long类型)生成接口(雪花算法),自动管理workId的申请和回收,保证主键唯一
开发示例
#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
启动配置: 
WEB容器启动配置:
框架基本运行数据工具:Apps。

基本对象:CnvexResult、CnvexException、JsonSerializerUtils和常用工具类


## framework.data
说明:封装Druid数据源配置,支持多数据源配置(数据访问层接口可以指定使用配置的数据源,使用@DataSourceName属性指定),JPA(Hibernate),集成mybatis
框架提供EntityMybatisDao、EntityJpaDao基类来实现业务数据访问层,提供EntityService服务层基类来封装常用的数据访问方法
### 示例
服务层通用接口:EntityService

数据访问层、业务访问层、实体基本结构如下:

数据访问层写法:

业务访问层写法:

多数据源事务自动使用方式:

多数据源事务手动使用方式

使用示例

## framework.web
说明:封装统一的JS框架(AdminLTE 3、easyui、H-ui、H+,框架生成页面样式使用的是H+),提供接口文档管理(swagger),接口版本路由,封装实体增、删、改、查Controller基类(WebViewEntityController