-
yue-library 开源发布:基于 Spring Boot 封装的基础库
2019-07-20 18:26:59一个基于SpringBoot封装的基础库 ...yue-library是一个基于SpringBoot封装的基础库,内置丰富的JDK工具,并且自动装配了一系列的基...一个基于SpringBoot封装的基础库
-- 主页:https://ylyue.cn/ --
-- QQ群:883630899 --
介绍
yue-library是一个基于SpringBoot封装的基础库,内置丰富的JDK工具,自动装配了一系列的基础Bean与环境配置项,可用于快速构建SpringCloud项目,让微服务变得更简单。
工程结构
. yue-library ├── yue-library 基础库 │ ├── yue-library-dependencies 父pom │ ├── yue-library-base 基础库提供了丰富的Java工具包,同时也自动装配了一系列基础Bean等 │ ├── yue-library-base-crypto 基于Hutool实现的加解密模块,提供诸如数据脱敏此类的更多特性 │ ├── yue-library-web 基础库WebMvc实现,用于servlet项目 │ ├── yue-library-webflux 基础库WebFlux实现,用于响应式编程项目(如:SpringCloudGateway) │ ├── yue-library-data-jdbc 基于SpringJDBC进行二次封装,拥有着强大性能的同时又不失简单、灵活等 │ ├── yue-library-data-redis 基于SpringRedis进行二次封装,更简单灵活,提供全局token与登录相关特性等 │ ├── yue-library-auth-service 基于SpringSecurity进行二次封装,更简单灵活,提供全局token与登录等特性 │ ├── yue-library-auth-client auth-client为auth-service客户端模块,提供获取当前登录用户状态信息等特性 │ ├── yue-library-pay 基于pay-java-parent进行二次封装,让你真正做到一行代码实现支付聚合 │ ├── yue-library-cloud-oss │ └── yue-library-cloud-sms ├── yue-library-samples 基础库示例 │ ├── yue-library-test yue-library-web代码测试项目:单元测试、接口测试、代码示例 │ ├── yue-library-test-webflux yue-library-webflux代码测试项目:单元测试、接口测试、代码示例 │ ├── yue-library-template-simple yue-library模版:SpringBoot项目模版 │ └── yue-library-template-ssc yue-library模版:SpringCloud项目模版,SOA共享架构(阿里巴巴中台) └── yue
快速开始
引入项目依赖
maven项目,在pom.xml文件中添加如下一段代码,并将
${version}
替换为对应版本号:<parent> <groupId>ai.ylyue</groupId> <artifactId>yue-library-dependencies</artifactId> <version>${version}</version> </parent>
随后引入所需要的模块,如基础库:
yue-library-base
<dependencies> <dependency> <groupId>ai.ylyue</groupId> <artifactId>yue-library-base</artifactId> </dependency> ... </dependencies>
版本说明
yue-library的版本命名方式,继2.1.0开始采用与 SpringBoot版本发行 对应的命名方式。
yue-library-base
为其他模块的基础依赖(简称基础库),所以若需要引入除基础库之外的模块(如:web、webflux、data-jdbc、data-redis),可以不引入yue-library-base
。示例版本号 版本号区别 j8.2.x
基于Java 8的2.x.x版本 j11.2.x
基于Java 11的2.x.x版本 Finchley.x
、Greenwich.x
、2.1.x
历史版本,具体区分请查看历史版本文档 更多细节,请查看中文文档
模块说明
yue-library-base(必备)
yue-library-base
提供了丰富的Java工具包,它能够帮助我们简化每一行代码(集成Hutool工具包)。
同时也自动装配了一系列基础Bean,可在 application.yml 文件中配置关闭,所有配置项皆是以yue.*
开头,如:yue.cors.allow=false
代表不允许跨域。- 丰富的Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装
- 默认开启热加载、热部署、支持跨域,一键解决联调问题
- 全局统一异常处理基类,结合
Result
对象,定位异常更轻松,前端显示更贴切 - 异步线程池:共用父线程上下文环境,异步执行任务时不丢失token
Result
Http最外层响应对象,更适应Restful风格APIvalidator
参数校验器,支持单参数连写与POJO对象(注解)校验等,更多的校验规则,更贴切的国内校验场景。(如:手机号、身份证号码)Convert
类型转换器,内置hutool、fastjson、yue三种类型转换规则,判断精确性能强大,未知类型兼容性更强
更多详细介绍,请查看中文文档
yue-library-data-jdbc(强烈推荐)
data-jdbc库基于SpringJDBC进行二次封装,拥有着强大性能的同时又不失简单、灵活。特性如下:
- 比SpringJDBC更方便好用、比SpringJPA更简单灵活
- 无侵入:data-jdbc 在 SpringJDBC 的基础上进行扩展,只做增强不做改变,简化
CRUD
操作 - 依赖管理:引入即可启动项目,关联druid实现SQL全监控
- 预防Sql注入:内置Sql注入剥离器,有效预防Sql注入攻击
- 损耗小:封装大量经过SQL优化处理的CRUD方法,直接面向对象操作,对比原生级CRUD处理,性能基本无损耗甚至更优
- 通用CRUD操作:内置通用 DAO,通过继承方式即可实现单表大部分 CRUD 操作
- 更科学的分页:分页参数自动解析,写分页等同于写基本List查询。更有优化型分页SQL检查
- 内置性能分析插件:可输出Sql语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询
- 类型强化:支持原生级SQL查询,并强化原生查询结果,简单便捷 + 可维护组合(支持全JSON或全DO)
- CRUD校验:CRUD操作是否符合预期,更好的避免脏数据的产生与违规操作
- 全局异常处理:CRUD操作相关异常统一处理,定位更精准,提示更友好,实现全局Restful风格
更多详细介绍,请查看中文文档
yue-library-data-redis(推荐)
data-redis库基于SpringRedis进行二次封装,更简单灵活,提供全局token与登录等特性:
- 简化使用并拥有Redis原生常用命令所对应的方法
- 保留SpringRedis所有常用特性:分布式缓存
- 提供分布式token、分布式锁
- 封装大量第三方登录特性,使登录更简单易于维护
- 封装常用的登录判断操作与redis-token解析
更多详细介绍,请查看中文文档
社区
在Gitter的社区里可以找到yue-library的用户和开发者团队。
参与贡献
欢迎各路好汉一起来参与完善 yue-library,我们期待你的 PR!
- 贡献代码:代码地址 yue-library ,欢迎提交 Issue 或者 Pull Requests
- Fork 本仓库并从 JDK对应的分支或对应的某个版本 创建你的分支
- 如果你添加的代码需要测试,请添加测试,确保单元测试通过(测试代码请放在:
yue-library-test
中) - 如果你修改了 API,请更新文档
- 确保代码风格一致
- 提交代码
- 新建 Pull Request
- 等待维护者合并
- 维护文档:文档地址 yue-library-doc ,欢迎参与翻译和修订
PR遵照原则
yue-library欢迎你的加入,进行开源共建,不过yue-library的维护者(同Hutool的维护者)是一个强迫症患者,为了照顾病人,需要提交的pr(pull request)符合如下规范:
- 关于注释:提供完备的注释,尤其对每个新增的方法应按照Java文档规范标明方法说明、参数说明、返回值说明等信息,必要时请添加单元测试,如果愿意,也可以加上你的大名。
- 关于缩进:采用IDEA中默认的
空格
作为标准,可设置一个tab
四个空格 - 关于三方库:新加的方法不要使用第三方库的方法,yue-library遵循无依赖原则
特别鸣谢
-
yue-library是一个基于SpringBoot封装的基础库
2019-10-16 09:57:24 -
springboot 引入jdbc驱动_SpringBoot 增强库 yue-library 2.1.0发布,提供更多特性支持
2021-01-03 07:59:22yue-libraryyue-library是一个基于SpringBoot封装的基础库...本次发布是一次历时9个月的大版本发布,虽然yue-library一直在不断的更新,但这次大版本的发布意味着yue-library看到了更远也能走得更远,为后续多租户、...yue-library
yue-library是一个基于SpringBoot封装的基础库
- 内置丰富的JDK工具
- 自动装配了一系列的基础Bean与环境配置项
- 快速构建SpringCloud项目,让微服务变得更简单
收藏一波以表支持吧(≧▽≦)/!本次发布是一次历时9个月的大版本发布,虽然yue-library一直在不断的更新,但这次大版本的发布意味着yue-library看到了更远也能走得更远,为后续多租户、国产化、数据脱敏等趋势需求打下了坚定基础。本次更新分离了响应式编程与阻塞式编程,对Auth认证模块也做了相应的拆分与优化,同时从此版本开始对开发文档进行了进一步支持,区分各大本版文档说明,增加历史文档专区。
2.1.0【2020-08-16】
新特性
基于全新的spring-cloud-alibaba体系封装改造,拆分独立的OAuth认证体系,对webmvc、webflux分开支持。依赖定义如下:
- 【base】提供yml默认配置支持,一键解决常规坑点困扰(如:时间格式化、可执行SQL打印、接口定义打印等),更适合国内标准
- 【base】@ApiVersion 注解可优雅的实现接口版本控制,只为更好的Restful
- 【web】实用的参数解析器(解决参数获取困扰,不再区分Query传参与Body传参,Request请求参数智能解析),并提供RequestParamUtils工具类适用于各种环境下获取请求参数
- 【web】HTTP消息转换器增强,fastjson与jackson一键切换
- 【redis】规范redis包名标准,分离OAuth认证体系
- 【redis】提供可配置的Redis存储对象序列/反序列化器
- 【jdbc】遵守Java开发手册命名规约,Service/DAO 层方法命名规约,优化如获取单个对象采用 get 做前缀
- 【jdbc】提供友好的方言支持,为适配国产化数据库打下基础
- 【jdbc】提供业务主键支持
- 【jdbc】提供字段命名策略支持
- 【jdbc】提供逻辑删除支持
- 【jdbc】提供获得表元数据支持
Bug修复
- 【jdbc】批量插入容易报错问题
工程结构
. yue-library├── yue-library 基础库│ ├── yue-library-dependencies 父pom│ ├── yue-library-base 基础库提供了丰富的Java工具包,同时也自动装配了一系列基础Bean等│ ├── yue-library-base-crypto 基于Hutool实现的加解密模块,提供诸如数据脱敏此类的更多特性│ ├── yue-library-web 基础库WebMvc实现,用于servlet项目│ ├── yue-library-webflux 基础库WebFlux实现,用于响应式编程项目(如:SpringCloudGateway)│ ├── yue-library-data-jdbc 基于SpringJDBC进行二次封装,拥有着强大性能的同时又不失简单、灵活等│ ├── yue-library-data-redis 基于SpringRedis进行二次封装,更简单灵活,提供全局token与登录相关特性等│ ├── yue-library-auth-service 基于SpringSecurity进行二次封装,更简单灵活,提供全局token与登录等特性│ ├── yue-library-auth-client auth-client为auth-service客户端模块,提供获取当前登录用户状态信息等特性│ ├── yue-library-pay 基于pay-java-parent进行二次封装,让你真正做到一行代码实现支付聚合│ ├── yue-library-cloud-oss│ └── yue-library-cloud-sms├── yue-library-samples 基础库示例│ ├── yue-library-testyue-library代码测试项目:单元测试、接口测试、代码示例│ ├── yue-library-test-webfluxyue-library-webflux代码测试项目:单元测试、接口测试、代码示例│ ├── yue-library-template-simpleyue-library模版:SpringBoot项目模版│ └── yue-library-template-sscyue-library模版:SpringCloud项目模版,SOA共享架构(阿里巴巴中台)└── yue
快速开始
引入项目依赖
maven项目,在pom.xml文件中添加如下一段代码,并将${version}替换为对应版本号:
ai.ylyueyue-library-dependencies${version}
随后引入所需要的模块,如WebMvc项目引入:yue-library-web
依赖说明:yue-library-base为基础模块,一般情况下不需要单独引入,如:web、data-jdbc、data-redis等模块皆已默认依赖。
ai.ylyueyue-library-web...
启动项目
新建一个SpringBoot main方法启动类:
@SpringBootApplicationpublic class TestApplication {public static void main(String[] args) throws Exception {SpringApplication.run(TestApplication.class, args);}}
写一个测试接口:
@RestController@RequestMapping("/quickstart")public class QuickstartController {@GetMapping("/get")public Result> get(JSONObject paramJson) {return ResultInfo.success(paramJson);}}
访问接口测试,如:http://localhost:8080/quickstart/get
{ "code": 200, "msg": "成功", "flag": true, "count": null, "data": {}}
上面的代码完全保持了SpringBoot的风格,但又提供了更多特性增强,如:HTTP消息转换器对 Alibaba Fastjson 的支持,同时不再区分 query from-data json 等传参方式,默认也对 跨域、时间格式、异常、参数校验 等常见坑点进行了本土化处理与特性增强。
版本说明
yue-library的版本命名方式,继2.1.0开始采用与SpringBoot和SpringCloudAlibaba相同的命名方式。
yue-library-base为其他模块的基础依赖(简称基础库),所以若需要引入除基础库之外的模块(如:web、data-jdbc、data-redis),可以不引入yue-library-base。
推荐版本依赖关系
依赖关系介绍
配置与文档说明
yue-library自动装配了一系列的基础Bean与环境配置项,可在 application.yml 文件中配置关闭,所有配置项皆是以yue.*开头,如:yue.cors.allow=false代表不允许跨域,更多配置项与细节介绍,可查看 官方文档 中各模块的详细说明。
官方文档 提供各模块的详细介绍与使用示例,类与方法说明可参阅 API文档,SpringBoot项目基础模版可使用 yue-library-template-simple,单元测试代码与标准示例可参考:yue-library-test
结语
引用此项目作基础依赖,后续也可很好的对于服务架构进行升级(单体架构、集群架构、微服务、SOA微服务)
新开发项目,建议直接以集群架构形式撸代码,不需要一开始就搭建微服务等,可根据业务需求实际出发。(不限于有SOA共享中心的伙伴)
-
yue-library 2.3.0发布,替换Db JavaBean转换方案,性能提升约300%+
2021-01-12 20:33:42yue-library简介 yue-library是一个基于SpringBoot封装的增强库 内置丰富的JDK工具 自动装配了一系列的基础Bean与环境配置项 快速构建SpringCloud项目,让微服务变得更简单 版本更新日志 新特性 data-jdbc进行了...yue-library简介
yue-library是一个基于SpringBoot封装的增强库
- 内置丰富的JDK工具
- 自动装配了一系列的基础Bean与环境配置项
- 快速构建SpringCloud项目,让微服务变得更简单
版本更新日志
新特性
data-jdbc进行了重大优化,如下:
- 替换Db JavaBean转换方案,性能提升约300%+
- 优化Convert JavaBean转换性能
- 优化Convert异常提示,划分日志等级
- 重载驼峰转换方法到Convert类
JDBC实体类映射方案已重构,废弃了Spring的转换器方案,这是一次底层改动。我已测试了如下场景成功支持:
- 驼峰转换(自动映射、自动识别boolean is命名)
- JSONObject、JSONArray解析支持
- 支持实体类多set方法存在
新增如下RowMapper:
- BeanPropertyRowMapper,JavaBean映射两倍有余Spring原生的性能,支持更多类型映射,支持 JSONField 注解
- ColumnMapRowMapper,转换 Map 为 fastjson 的 JSONObject
- 【base】优化异步线程池默认配置,完美解决异步上下文遇到的所有问题(包括并发模式与Servlet提前关闭导致的子线程获取不到参数异常)
- 【base】全局统一异常处理新增FeignException处理,提供异常消息格式化构造
- 【base】增强ExceptionUtils,提供多种堆栈打印方式与获取方式,并优化异常返回错误内容
- 【base】Java全局网络代理配置,允许使用
,
分割(如:localhost|127.*
localhost,127.*
) - 【base】新增R.errorPromptFormat()方法
- 【base】提供最外层HTTP状态码503(停机维护)约定
- 【base】新增JsonList驼峰等属性命名策略多个重载工具方法
- 【base】增强validator校验框架,支持将
@Valid
注解添加到POJO类上 - 【jdbc】规范排序、比较、预期、枚举,创建比较code定义命名规范类
- 【jdbc】对BaseDO进行驼峰命名规范
- 【jdbc】增强Db WHERE SQL对数组类型的处理
Bug修复
- 【base】解决@Chinese注解中文汉字校验,value为空时的NullPointerException
- 【web】HttpMessageConverter选用fastjson时,解析非json格式响应体错误 #I2ALJW
Maven仓库实际发布版本号
j8.2.3.0
、j11.2.3.0
依赖 版本 spring-boot 2.3.5.RELEASE spring-cloud Hoxton.SR9 spring-cloud-alibaba 2.2.3.RELEASE hutool 5.4.4 fastjson 1.2.74 工程结构
. yue-library ├── yue-library 基础库 │ ├── yue-library-dependencies 父pom │ ├── yue-library-base 基础库提供了丰富的Java工具包,同时也自动装配了一系列基础Bean等 │ ├── yue-library-base-crypto 基于Hutool实现的加解密模块,提供诸如数据脱敏此类的更多特性 │ ├── yue-library-web 基础库WebMvc实现,用于servlet项目 │ ├── yue-library-webflux 基础库WebFlux实现,用于响应式编程项目(如:SpringCloudGateway) │ ├── yue-library-data-jdbc 基于SpringJDBC进行二次封装,拥有着强大性能的同时又不失简单、灵活等 │ ├── yue-library-data-redis 基于SpringRedis进行二次封装,更简单灵活,提供全局token与登录相关特性等 │ ├── yue-library-auth-service 基于SpringSecurity进行二次封装,更简单灵活,提供全局token与登录等特性 │ ├── yue-library-auth-client auth-client为auth-service客户端模块,提供获取当前登录用户状态信息等特性 │ ├── yue-library-pay 基于pay-java-parent进行二次封装,让你真正做到一行代码实现支付聚合 │ ├── yue-library-cloud-oss │ └── yue-library-cloud-sms ├── yue-library-samples 基础库示例 │ ├── yue-library-test yue-library代码测试项目:单元测试、接口测试、代码示例 │ ├── yue-library-test-webflux yue-library-webflux代码测试项目:单元测试、接口测试、代码示例 │ ├── yue-library-template-simple yue-library模版:SpringBoot项目模版 │ └── yue-library-template-ssc yue-library模版:SpringCloud项目模版,SOA共享架构(阿里巴巴中台) └── yue
快速开始
引入项目依赖
maven项目,在pom.xml文件中添加如下一段代码,并将
${version}
替换为对应版本号:<parent> <groupId>ai.ylyue</groupId> <artifactId>yue-library-dependencies</artifactId> <version>${version}</version> </parent>
随后引入所需要的模块,如WebMvc项目引入:
yue-library-web
依赖说明:
yue-library-base
为基础模块,一般情况下不需要单独引入,如:web、data-jdbc、data-redis等模块皆已默认依赖。<dependencies> <dependency> <groupId>ai.ylyue</groupId> <artifactId>yue-library-web</artifactId> </dependency> ... </dependencies>
启动项目
新建一个SpringBoot
main
方法启动类:@SpringBootApplication public class TestApplication { public static void main(String[] args) throws Exception { SpringApplication.run(TestApplication.class, args); } }
写一个测试接口:
@RestController @RequestMapping("/quickstart") public class QuickstartController { @GetMapping("/get") public Result<?> get(JSONObject paramJson) { return ResultInfo.success(paramJson); } }
访问接口测试,如:http://localhost:8080/quickstart/get
{ "code": 200, "msg": "成功", "flag": true, "count": null, "data": {} }
上面的代码完全保持了SpringBoot的风格,但又提供了更多特性增强,如:HTTP消息转换器对 Alibaba Fastjson 的支持,同时不再区分 query from-data json 等传参方式,默认也对 跨域、时间格式、异常、参数校验 等常见坑点进行了本土化处理与特性增强。
收藏一波以表支持吧(≧▽≦)/!
-
PAT-1022-Digital Library
2017-01-30 20:26:461022. Digital Library (30) ...CHEN, Yue A Digital Library contains millions of books, stored according to their titles, authors, key words of their abstracts, publishers, and publ -
开源工具类汇总
2021-01-14 14:39:23开源工具类 Hutool yue-library: yue-library是一个基于SpringBoot封装的增强库,可用于快速构建SpringCloud项目,让微服务变得更简单。 - Gitee.com -
PAT-A-1022. Digital Library (30)
2017-05-11 22:45:511022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B ...CHEN, Yue A Digital Library contains millions of bo -
1022. Digital Library (30)--set、getline(cin,s)、cin
2018-03-06 21:26:201022. Digital Library (30)时间限制1000 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA Digital Library contains millions of books, stored according to their titles, authors, key ... -
C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Standard Template Library:标准模板库。 C POSIX library : POSIX系统的C标准库规范。 ISO C++ Standards ...
-
java-model-gen generates CRD that imports non-exist class
2020-11-28 09:39:34t exist in generated file nor library <pre><code>java import io.kubernetes.client.models.IoK8sApimachineryPkgApisMetaV1ObjectMeta; </code></pre> <p>Actually, should I just replace it with the ... -
[PAT-甲级]1022.Digital Library
2017-09-09 19:25:481022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 ...CHEN, Yue A Digital Library contains millions of bo -
An updated and organized reading list for illustrating the patterns of scalable, reliable, and performant large-scale systems. Concepts are explained in the articles of prominent engineers and ...
-
Commercial use permissions: MKL-DNN and MKL-ML
2020-12-08 18:33:01<div><p>Hi, Excuse me. Does MKL-DNN library have commercial use permissions? Does MKL-ML have permissions? <p>Thank you! Yue</p><p>该提问来源于开源项目:oneapi-src/oneDNN</p></div> -
Segmentation: Implemention of a simple Chan-Vese Algorithm
2021-01-10 16:15:21<div><p>I have implemented a simple Chan-Vese Algorithm in the segmentation module based mostly on matlab code by Yue Wu freely available at ...<p>Let me know what needs to be changed, improved or ... -
android 游戏学习(jbox2d)
2012-09-09 11:14:00导入jbox2d-2.0.1-library-only.jar /** * 矩形对象 * * @time 上午11:17:09 * @author retacn yue * @Email zhenhuayue@sina.com */ public class MyRect { private float x, y, w, h, angle; pu... -
[Vue warn]: Failed to resolve filter: formatSize
2021-01-05 04:22:53<p>Are you using some 3rd party library for such filters? I don't see such filter implementation in the lian-yue/vue-upload-component repository. <p>Am I missing something?</p><p>该提问来源于开源... -
Looks like installed umi_tools, but still does not work
2020-12-01 21:22:07Yue <pre><code> `Desktop-590-p0xxx:~/umi_tools-1.0.0$` umi_tools --help umi_tools: command not found 0xxx:~/umi_tools-1.0.0$ python3 setup.py install --user running install running bdist_egg ... -
内存泄露 检测 工具
2017-08-19 16:22:00韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用...2.Dmalloc-Debug Malloc Library. 3.Electric Fence-Linux分发版中由Bruce Perens编写...
-
【待完成】多线程设计模式
-
kali2020.4换源重启之后终端无法启动terminal emulator
-
网站建设:简单动态网站搭建.png
-
(新)备战2021软考网络工程师历年真题培训套餐
-
Redis数据库入门与使用
-
Kotlin协程极简入门与解密
-
安卓贪吃蛇源代码
-
【数据分析-随到随学】Spark理论及实战
-
RabbitMQ消息中间件实战(附讲义和源码)
-
10.CAN控制与串口控制例程源码
-
图像的tile边界条件
-
2021-01-17
-
杆单元的有限元实现——有限元实践笔记(2)
-
(新)备战2021软考网络工程师培训学习套餐
-
Python+Django+Mysql的多app后端开发入门
-
Machine-Learning__讲解常见的机器学习算法
-
SpringBoot和Vue构建的文件分享系统
-
前端性能优化
-
ArcGIS Pro2.6和ArcGIS Enterprise学习
-
C/C++编程全家桶(Daozy极限编程)