Martian 框架发布了 3.0.29 版本
Martian 原名叫 Mars-Java,为了避免跟 java 商标产生冲突,所以改名了。 先说点题外话 在遭受了 100 多条评论后,我认识到了一些问题,其中最大的就是 接口受理的请求方式太少了,在某些场景下不够用。 首先呢,我得在解释一次:Martian 是可以接收任意 http 请求的,只不过 api 接口只受理这么几种,我的限制不是做在服务上的,而是做在接口上的,所以呢 ajax 发出的那个 option 是可以正常接收并响应 200 的,完全没问题。 希望大家以后不要在误解咯。 本次更新的点 接口受理的请求方式更多了,新增了 PUT 和 DELETE,也就是目前为止,接口可以受理 GET,POET,DELETE,PUT 四种请求方式了, [为什么不全支持,暂时不予解释] 。 API 新增 @MarsReference注解 新增的 PUT 和 DELETE 怎么用 很简单,跟之前的 GET,POST 一样设置,只不过 ReqMethod 里面多了两个选项. @RequestMethod(ReqMethod.PUT) String expUploadRequest(ExpVO expVO) @MarsReference 注解是啥 我们目前的声明式 API,采用的如下机制: 创建 interface -> 创建实现类 -> 在 interface 上加上 MarsApi 注解 这样会出现一些局限,那就是一个 interface 只能对应一个实现类,玩起来就像是 service 的父接口一样, 为了改善这个情况,我提供了一个新的注解 @MarsReference 这个注解怎么用呢?请看下面示例,注意看注释和双引号里的汉字 /** * 老套路,正常声明一个接口 */ @MarsApi(refBean = "这里还是可以引用 bean") public interface ExpApi { /** * get 请求示例 * http://127.0.0.1:8080/expGetRequest?name=张三&names=王五&names=赵六 * @param expVO * @return */ @MarsReference(beanName = "这里的规则,请看下面第一点",refName = "这里的规则,请看下面第二点",refType = RefType.METHOD) List<ExpVO> expGetRequest(ExpVO expVO); } beanName 属性: 这里也可以引用一个 bean,如果这里引用了就以这个为主,如果这里没引用就以 interface 上的全局为主 refName 属性: 要引用的资源,可以是方法名也可以是属性名,如果不设置,默认为这个方法的名称 refType 属性: 用来标记 refName 里设置的是方法名还是属性名,默认为方法名 从这一刻开始,interface 和实现类彻底解耦了,他们不再是父子关系(父子关系那一套也一样兼容),一个 interface 可以引用多个 bean 里面的方法或者属性,在一定程度上增加了 interface 的灵活性。 Martian 官网:http://www.mars-framework.com