yuyenews / Martian
Licence: mit
🎨 Martian 是一个基于NIO的JavaWeb编程框架,可以帮助你快速的开发后端服务
Stars: ✭ 320
Projects that are alternatives of or similar to Martian
hasor
Hasor是一套基于 Java 语言的开发框架,区别于其它框架的是 Hasor 有着自己一套完整的体系,同时还可以和先有技术体系做到完美融合。它包含:IoC/Aop容器框架、Web框架、Jdbc框架、RSF分布式RPC框架、DataQL引擎,等几块。
Stars: ✭ 938 (+193.13%)
Mutual labels: ioc, mvc, aop
Hasor
Hasor是一套基于 Java 语言的开发框架,区别于其它框架的是 Hasor 有着自己一套完整的体系,同时还可以和先有技术体系做到完美融合。它包含:IoC/Aop容器框架、Web框架、Jdbc框架、RSF分布式RPC框架、DataQL引擎,等几块。
Stars: ✭ 713 (+122.81%)
Mutual labels: mvc, ioc, aop
Cppwebframework
The C++ Web Framework (CWF) is a MVC web framework, Open Source, under MIT License, using C++ with Qt to be used in the development of web applications.
Stars: ✭ 348 (+8.75%)
Mutual labels: servlet, mvc
Coldbox Platform
A modern, fluent and conventions based HMVC framework for ColdFusion (CFML)
Stars: ✭ 220 (-31.25%)
Mutual labels: mvc, aop
Farseer.Net
Provides consistent standard use of common components of the .Net Core language
Stars: ✭ 42 (-86.87%)
Mutual labels: ioc, aop
LSFramework
手写山寨版spring学习aop、ioc思想的demo,没看过spring的源码,因为实在是太庞大了,参考部分网上博客及开源代码完成。
Stars: ✭ 53 (-83.44%)
Mutual labels: ioc, aop
Blog.core
💖 ASP.NET Core 6.0 全家桶教程,前后端分离后端接口,vue教程姊妹篇,官方文档:
Stars: ✭ 3,542 (+1006.88%)
Mutual labels: ioc, aop
Hiboot
hiboot is a high performance web and cli application framework with dependency injection support
Stars: ✭ 150 (-53.12%)
Mutual labels: mvc, ioc
Interviews
A list of fancy questions I've been asked during the interviews I had. Some of them I ask when interviewing people.
Stars: ✭ 140 (-56.25%)
Mutual labels: mvc, ioc
Furion
Make .NET development easier, more versatile, and more popular.
Stars: ✭ 902 (+181.88%)
Mutual labels: mvc, ioc
CNeptune
CNeptune improve productivity & efficiency by urbanize .net module with meta-code to lay foundation for frameworks
Stars: ✭ 30 (-90.62%)
Mutual labels: ioc, aop
tsioc
AOP, Ioc container, Boot framework, unit testing framework , activities workflow framework.
Stars: ✭ 15 (-95.31%)
Mutual labels: ioc, aop
Nutz
Nutz -- Web Framework(Mvc/Ioc/Aop/Dao/Json) for ALL Java developer
Stars: ✭ 2,422 (+656.88%)
Mutual labels: ioc, aop
Swoolefy
swoolefy是一个基于swoole实现的轻量级、高性能、协程级、开放性的API应用服务框架
Stars: ✭ 495 (+54.69%)
Mutual labels: mvc, ioc
基于NIO的Web编程框架
项目简介
Martian 是一个基于NIO的JavaWeb编程框架,可以帮助你快速的开发后端服务。 设计理念是 极致精简,专注于前后端分离,只保留必要的功能,并且使用最简洁的方式来实现这些功能。
在 声明式API 和 DAO 的加持下,Controller没有了方法体,数据库操作变得很简洁,极大的降低了Controller和数据库操作的代码量,让用户专注在Service层
- 基于NIO,彻底脱离Tomcat,JBoss等容器
- 让Controller变成了一个interface,降低了开发的工作量
- 拥有其他web框架 拥有的大部分功能,比如AOP,IOC,声明式事务,异常监听等
- 拥有自主开发的 半ORM持久层框架,并天然的集成到了Martian中
项目生态
- 【分布式组件】Martian-cloud
- 【网关及其他组件】Martian-Component
- 【更多组件】筹划中
官方资源
- 开发文档: http://mars-framework.com/doc.html?tag=martian
- 视频教程: https://www.bilibili.com/video/BV1dv4y1Z7Wt
- 使用示例: https://github.com/yuyenews/Mars-Example
项目特性
一、编写Http接口不需要方法体
只需要在你的interface上加上一个注解,即可对外提供一个http接口,并且我们还支持传统的Controller写法
@MarsApi(refBean="要引用的bean的name")
public interface TestApi {
返回类型 selectList(TestDTO testDTO);
}
二、单表增删改查无sql
// 根据主键查询一条数据
@MarsGet(tableName = "表名称",primaryKey = "主键字段名")
public abstract 要返回的实体类 selectById(int id);
// 单表新增
@MarsUpdate(tableName = "表名称",operType = OperType.INSERT)
public abstract int insert(实体对象参数);
// 单表根据主键删除
@MarsUpdate(tableName = "表名称",operType = OperType.DELETE,primaryKey = "主键字段名")
public abstract int delete(int id);
// 单表根据主键修改
@MarsUpdate(tableName = "表名称",operType = OperType.UPDATE,primaryKey = "主键字段名")
public abstract int update(实体对象参数);
三、参数校验只需一个注解
在API接口的参数对象里的字段上加上一个注解即可(VO的字段上加注解)
// 不可为空,且长度在2-3位
@MarsDataCheck(notNull = true,maxLength = 3L,minLength = 2L, msg = "id不可为空且长度必须在2-3位之间")
private Integer id;
// 正则校验
@MarsDataCheck(reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$",msg = "密码不可以为空且必须是6-12位数字字母组合")
private String password;
前端如何得到提示?
正常请求API就好了,如果校验不通过会得到这样一个json
{"error_code":1128,"error_info":"提示文字"}
四、异常监听器
通常我们在写代码的时候,需要给每个Controller的方法加上try{}catch(){},用来在异常的时候,能够正常的返回 json串
spring是有一个叫ExecptionHandler 来解决这个问题,而Martion也提供了对应的解决方案
解决方案就是什么都不用管,如果出了异常,会自动给前端返回如下json串
{"error_code":500,"error_info":"异常提示"}
五、一行注解,解决分布式锁
在要加锁的方法上添加RedisLock注解
@RedisLock(key = "自己定义一个key")
public int insert(){
return 1;
}
社区以及联系方式
- QQ群: 773291321
- 邮箱: [email protected]
- B站: 贝克街的天才
- 微博: @Ye卡布奇诺
- 社区: https://github.com/yuyenews/Martian/discussions
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].