社区
Java EE
帖子详情
推荐一下自己准备考虑开源的基于Spring MVC的框架
flyxxxxx
2016-12-26 11:02:58
基于Spring MVC的业务处理框架Zenking MVC-单例模式转向非单例模式
http://blog.csdn.net/flyxxxxx/article/details/53884126
...全文
430
3
打赏
收藏
推荐一下自己准备考虑开源的基于Spring MVC的框架
基于Spring MVC的业务处理框架Zenking MVC-单例模式转向非单例模式 http://blog.csdn.net/flyxxxxx/article/details/53884126
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flyxxxxx
2017-08-22
打赏
举报
回复
Prototype框架:介于技术和业务之间的框架
更多内容请参考:http://blog.csdn.NET/flyxxxxx/article/category/7055640
业务目标:
1、分离具体业务代码和技术实现代码,当技术实现发生变更时不需要修改具体业务代码(或者很少需要修改)。
2、使用注解来代替工具类和方法的使用,简化学习和开发过程。
3、自动生成业务接口的API文档,并为API的测试提供一些支持。
技术目标:
1、一个业务实现,无需额外代码仅需少量配置,同时!!!支持各类远程调用技术,包括HTTP REST/dubbo/httpinvoker/hession,并为其它任何SOA/RPC等提供扩展支持。
2、解决各类接口在序列化对象时存在的多余数据,以减少API在开发过程中频繁更新及对dubbo等远程调用提供更好的版本管理(不需要人工配置版本路由)。
3、解决如spring中如事务处理不恰当(如在控制器中使用多次写事务或写用户操作日志时未使用异步事务)等一系列问题,以减少代码review的工作量。
4、为高并发(异步、并行、缓存、线程池)、高可用(隔离、限流、降级)、分布式系统提供一些基本的支持。
5、框架的每个已有部件尽可能的是可替换的,并对框架的扩展提供友好的技术支持。
6、具体业务的开发,除了使用本框架的一些注解和少量功能外,尽可能与框架无关,也就意味着包括此框架本身也是可替换的(除了框架的扩展代码)。
设计思想:
1、基于原型(prototype)开发,而非spring推荐的单一实例(singleton)
2、接口最小化原则,避免序列化对象时多余的字段
3、如果能不让程序员偷懒,就不让他们偷懒,也就是尽量减少后续的技术债务。
设计思路:
在类被使用之前,通过javassist字节码技术对类的方法一定的修改,实现方法注解对应的处理逻辑(事务、异步、责任链、并行等).
通过方法参数注入bean而不是spring中的成员变量注解,以解决调用另外的方法时的注入问题.
根据每个接口的输入输出(注解定义的),创建不同的输入类和输出类,以解决序列化对象带来的多余字段问题、接口多版本问题、API文档问题。
主要功能:
1、工具注解:
a、事务管理:以Spring事务管理中基础提供处理管理支持
b、异步:不再需要丑陋的内部类
c、并行:在多个线程中处理不同的业务(比如微服务下的调用其它服务),并且与异步注解配合,可在异步下并行调用多段业务代码。
d、异常处理:使用一个或多个方法处理方法抛出的不同类型的异常
e、决策:根据方法返回值决定调用另外的某个方法(可反射调用子类的方法)
f、方法断路:使用Hystrix实现
g、消息发送与订阅:通过Rxjava实现消息发送与处理逻辑的分离,让业务开发人员无需了解具体实现技术(可能是基于事件、数据库或MQ等不同形式),比如异常日志、用户操作日志、短信邮件发送、APP通知、事件等均可通过此功能来实现解耦。
h、SQL:简化SQL的查询、批处理、调用存储过程等
i、IO处理:提供对byte[]、char[]、String、File、InputStream、Output、Reader、Writer、URL等不同形式数据的转换,只需要一个注解就能完成.
j、模板:提供类似发短信、邮件时的内容模板
k、提供Spring注解Value、Cache等缓存注解的支持
2、业务管理
a、业务实现类可按用户自定义的规则(如依次调用validate、business、after、async等方法以责任链形式分别用于处理不同的业务逻辑
b、不同的业务类方法,允许不同的事务(只读、可写、无事务),允许独立事务,允许多业务方法统一事务(除异步方法外),支持读写分离
c、支持异步处理业务
d、支持限流与业务降级
e、业务接口输出(用于分析不同版本间的接口变化,为APP不同版本兼容及兼容测试做支持.
3、HTTP REST
a、提供对Spring MVC的支持,业务接口自动注册为控制器的方法
b、GET方式(或未指定具体方式)只提供读事务(除异步方法外)
c、多接口版本自动路由支持(不同版本使用同一URL地址)
d、集成Swagger文档展示,方便测试
e、Servlet3异步请求支持
f、feign客户端代码在线生成
g、js表单验证数据代码在线生成
4、dubbo/HttpInvoker/Hession
a、提供打包生成客户端代码(不同版本的)
b、其它业务管理提供的特性
c、测试程序运行时生成客户端代码,以供持续集成工具打包
5、分布式事务支持
a、分布式事务处理服务中心(事务处理中间件)
b、在dubbo/http rest下支持跨虚拟机的分布式事务
6、开发、运维与自动化测试
a、集成不同技术的支持(类似Spring Boot starter)
b、API信息保存服务(在微服务/SOA环境下收集多个应用的API信息),以供API版本变更时测试.
c、统一的异常处理方式
d、性能统计数据输出
e、收集访问请求及出错请求(包括请求与结果)(待定)
f、分析请求,生成自动化测试脚本(待定)
性能:
采用javassist直接生成字节码,对大多数调用(空方法体),连续10W次责任链调用(调用两个空方法)响应时间小于300毫秒(原生java直接调用小于10毫秒)。以10毫秒的业务响应时间计算,则构架对业务响应时间的影响小于0.003%。以一个非常复杂的应用100次javassist的方法调用计算(通常小于10次),则构架对业务响应时间的影响小于0.3%.
应用场景:
1、新开发应用:以此框架开发的产品是面向未来技术的,扩展此框架或替换此框架代价很低。
2、ESB/适有SOA技术开发的项目向Spring Cloud/dubbo等迁移.
flyxxxxx
2017-08-22
打赏
举报
回复
框架整体介绍:http://blog.csdn.NET/flyxxxxx/article/category/7055640
github地址:https://github.com/flyxxxxx/prototype
部分功能的预览,目前主体功能还在完善中。
下载后可使用maven编译,Eclipse等开发工具需要先安装lombok插件:http://www.cnblogs.com/lovefeng/p/6434735.html
爱睡觉的阿狸
2016-12-26
打赏
举报
回复
开源吧,谢谢楼主。
推荐
开源
项目:
Spring
MVC
Showcase - 探索
Spring
MVC
的无限可能
在这个充满创新和活力的技术世界中,
Spring
MVC
作为一款强大的Web
框架
,始终引领着Java Web开发的趋势。今天,我们向您隆重
推荐
一个由VMware公司维护的
开源
项目——
Spring
MVC
Showcase。虽然该项目已不再积极更新,但它仍是一个了解并掌握
Spring
MVC
功能的宝贵资源。 ## 项目介绍
Spring
MVC
Showcase是
Spring
MVC
框架
的展示平台...
构建
Spring
MVC
与WebSocket的即时聊天系统
WebSocket是一种在单个TCP连接上进行全双工通信的协议。它为网络应用提供了实时通讯能力,这在需要即时信息交换的场合尤为重要。传统的HTTP协议是基于请求/响应模型,不适合实时交互的场景。WebSocket弥补了这一空缺,它允许服务器主动向客户端发送消息,实时性大大提升,特别适合实时聊天应用。与HTTP相比,WebSocket在实时聊天应用中减少了消息交换的开销,增强了系统的可扩展性和消息的实时性,使用户体验得到了极大的改善。
开源
项目教程:基于
Spring
+
Spring
MVC
+Mybatis+Shiro的个人博客系统
开源
项目教程:基于
Spring
+
Spring
MVC
+Mybatis+Shiro的个人博客系统 1. 项目介绍 songjhh_blog 是一个由 Java 编写的个人博客系统示例,采用了一系列现代Web开发中的主流技术栈。它集成
Spring
框架
处理依赖注入和核心逻辑,
Spring
MVC
负责请求处理和视图渲染,而数据持久层则交给了 MyBatis 处理,确保了灵活的数据访问。此外,通过 ...
Spring
MVC
学习大纲:从基础入门到实战应用与源码解析(Vue.js 前端示例)
在开始学习
Spring
MVC
之前,需要
准备
好开发环境。首先,确保已经安装了 Java JDK,这是运行 Java 程序的基础。其次,选择一个合适的集成开发环境(IDE),如 IntelliJ IDEA、Eclipse 或
Spring
Tool Suite。这些 IDE 提供了丰富的功能,如代码提示、自动补全、错误检测等,能够大大提高开发效率。此外,还需要熟悉 Maven 或 Gradle 的使用。Maven 和 Gradle 是常用的 Java 项目构建工具,它们可以帮助管理项目的依赖关系、构建项目
Spring
框架
Spring
是一个容器,主要是管理对象生命周期,负责对象的创建、初始化、依赖注入、销毁
Java EE
67,535
社区成员
225,843
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章