Jboot 简介
概念:Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,提供了AOP、RPC、分布式缓存、限流、降级、熔断、统一配置中心、Swagger Opentracing、metrics、分布式session、代码生成器、jwt、shiro安全控制等功能,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、html、css、js 等资源文件进行热加载。
特性:
- 基于 JFinal 的 MVC + ORM 快速开发。
- 基于 ShardingSphere + Seata 分布式事务 和 分库分表。
- 基于 Dubbo 或 Motan 的 RPC 实现
- 基于 Sentinel 的分布式限流和降级
- 基于 Apollo 和 Nacos 的分布式配置中心
- 基于 EhCache 和 Redis 的分布式二级缓存
- Jboot 目前已经开源超过了 3 年的时间,迭代了 100+ 个版本,已经被超过 1000+ 公司在使用
- Jboot集成了 grpc、thirft和motan,所以在Jboot中使用rpc是非常简单快速的,可以大大提升我们的开发效率。Jboot是一个非常实用的开源框架,在Gitee被评为最有价值的开源项目
Jboot 历史及由来
Jboot是一个基于JFinal和Undertow开发的微服务框架。提供了AOP、RPC、分布式缓存、限流、降级、熔断、统一配置中心、swagger api自动生成、Opentracing数据追踪、metric数据监控、分布式session、代码生成器、shiro安全控制等功能。Jboot是一个类似SpringCloud的开源框架, 已经广泛使用于正式的商业上线项目。Jboot集成了代码生成,微服务,MQ,RPC,监控等功能,开发者使用起来非常简单。
什么是微服务?
大型的电商系统,如京东淘宝,实际上是由很多个子项目组成的,每个子项目都可以理解为一个服务,由这些子项目服务协同合作,完成整个系统的业务需求,把大型的项目拆分成多个微小的服务就是微服务。
微服务的优点有哪些?
如果没有微服务架构,所有的功能都集成在大系统中,假如其中一个小模块出了问题,需要进行优化,那就需要重新部署整个项目,这个过程中可能就会中断服务。比如淘宝的订单查询模块出现问题了,不可能因为升级而重启整个淘宝网站。如果淘宝想要去读取子项目的数据,怎么办呢?我们可以让这个子项目提供一个API,然后让需要这个数据的项目去调用,这种方式还是比较麻烦,在项目架构中,会使用一种叫RPC(Remote Procedure Call)的技术,翻译过来就是远程调用的意思。也就是说我们的项目里,只要调用类似server.function(),就调用到了远程服务器的function()方法了。RPC的开源框架有很多,比如google的grpc,tiwtter的thirft,阿里的dubbo,新浪的motan。
Jboot的作者杨福海先生现任某互联网公司CTO,开源爱好者,热衷于技术分享。中国第一个Android快速开发开源框架Afinal作者,Afinal获得开源中国最受欢迎的开源软件,目前有上万的开发者和公司在使用Afinal进行快速开发。JPress开源软件作者,JPress是一个WordPress的java代替版,JPress具有极轻、极快、灵活等特点,基于LGPL开源协议,是国内为数不多的优秀的JAVA开源软件。其最新开源框架Jboot在开源中国社区被评为'最受欢迎的开源中国软件'。
Jboot 最新版说明
Jboot v3.2.7 更新内容如下:
- 新增:为 JbootJson 新增 camelCaseToLowerCaseAnyway 配置,默认为 false
- 新增:Columns 查询添加 safeMode ,safeMode 对添加 null 值的数据会自动抛出空指针异常。
- 优化:修改 JbootModel.buildIdCacheKey 为 protected 修饰,方便在某些情况下进行重写。
- 优化:Columns 在 safeMode 模式下,当传入 null 值时,直接抛出空指针异常,更加方便开发调试。
- 优化:ClassScanner 和 JbootJson
- 优化:升级 fastjson、jackson Json 等到最新版本
- 修复:JbootAppListener 无法进行正确注入的问题
- 修复:Model 的 getter 方法无法输出 json 的问题
maven 依赖:
<dependency> <groupId>io.jboot</groupId> <artifactId>jboot</artifactId> <version>3.2.7</version> </dependency>
Hello World:
@RequestMapping("/") public class HelloworldController extends JbootController { public void index(){ renderText("hello world"); } public static void main(String[] args){ JbootApplication.run(args); } }