Martian 是一个不需要容器的Java开发框架。

不需要Tomcat,不需要Jboss,不需要Netty,甚至不需要Servlet,完全基于JRE类库开发的http服务,将瘦身进行到底。

-摘自官方介绍

新建工程

新建maven工程,添加依赖:

<dependencies><!-- 这个包为框架的启动器 --><dependency><groupId>com.github.yuyenews</groupId><artifactId>mars-starter</artifactId><version>3.0.29</version></dependency><!-- 下面的jar包为日志框架,必须引入,否则控制台看不到任何信息,此处以jdk日志为例 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.7.12</version></dependency><!-- 具体要用的日志框架 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>
</dependencies>

启动

配置类:

public class DemoConfig extends MarsConfig {
}

目前配置可以通过配置类完成配置,具体的配置类为继承MarsConfig,里面可以重写部分需要的方法,制定自己的配置,不重写则保持默认。

启动类:

public class MarsApplication {public static void main(String[] args) {//运行并写入配置文件StartMars.start(MarsApplication.class, new DemoConfig());}
}

API接口

声明一个接口,然后声明需要对外暴露的接口方法:

@MarsApi(refBean="demoService")
public interface DemoApi {String hello();
}

服务实现

可通过继承实现的api接口,完成该接口的实现,官方文档介绍可不实现api接口,但为了规范和不出错,建议实现接口:

@MarsBean("demoService")
public class DemoService implements DemoApi {@Overridepublic String hello() {return "OK.";}
}

浏览器中输入:http://localhost:8080/hello

可以得到我们的结果:

数据库服务实现

配置数据连接

配置需要在之前的DemoConfig类中配置,我们添加jdbc的配置:

public class DemoConfig extends MarsConfig {@Overridepublic List<Properties> jdbcProperties() {List<Properties> list = new ArrayList<>();Properties properties = new Properties();properties.put("name","dataSource");properties.put("url","jdbc:mysql://127.0.0.1:3306/mars?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8");properties.put("username","root");properties.put("password","12345678");properties.put("driverClassName","com.mysql.jdbc.Driver");list.add(properties);// 如果要多个数据源,add多个到list即可return list;}
}

Dao层编写

为什么用抽象类的形式创建? 因为这样单表操作可以用抽象方法,多表操作可以自己写sql。

实现自己的根据id来获取用户信息的数据库查询接口:

@MarsDao(value = "demoDao")
public abstract class DemoDao {@MarsGet(tableName = "user_info",primaryKey = "id")public abstract UserInfo selectById(int id);
}

DTO实体类:

public class UserInfo {@JSONField(name = "name")private String name;@JSONField(name = "age")private String age;@JSONField(name = "id")private int id;//省略set,get
}

API和Service的编写

api实现方法:

@MarsLog//可以打印具体的请求信息
String getUserName(UserVO userVO);

service实现:

@Override
public String getUserName(UserVO userVO) {UserInfo userInfo = demoDao.selectById(userVO.getId());return userInfo == null ? "" : userInfo.getName();
}

其中VO为包裹的一个id的字段:

public class UserVO {private int id;public int getId() {return id;}public void setId(int id) {this.id = id;}
}

书写完成后,当我们输入请求可以返回相应的结果信息:

整个流程大致分为:

目前该项目的实现还在进行中,更新的频率也是比较快的,抱着最简洁的目标去开发一套web框架,是一个比较难开始的过程,目前作者也在不断的努力中,尤其是作为一个爱好开源的开发者,可以在此基础上提出或开发更加优秀的功能或模块,也是提升自己,贡献社区的一种较好的方式。

更多可能

mars目前也提供了分布式的组件,通过mars-cloud完成简单的服务注册与发现的功能。

参考

mars示例:https://github.com/yuyenews/Mars-Example

mars官网:http://mars-framework.com/

Martian分析:轻量级微服务网络框架试用(Mars)相关推荐

  1. 分析一下微应用框架(一)

    前言 对于大型前端应用的演进,微应用架构是一种尝试,微应用技术在端上本质就是一个组件资源的管理,组件可以是页面,也可以是一个弹框内容,甚至极端一点把一个逻辑很复杂的按钮作为一个应用来接入.在 2017 ...

  2. Jeecg-P3 1.0.1版本发布,轻量级微服务框架

    JEECG-P3微服务框架 Jeecg-P3是一款轻量的JAVA微服务框架,类似spring-boot,采用Springmvc+Velicity实现,插件开发与容器技术最佳实现,目前已开发" ...

  3. abp vNext微服务框架分析

    abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...

  4. 【转】abp vNext微服务框架分析

    abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...

  5. 秒杀springboot——未来轻量级高性能的Java云原生微服务框架来啦

    秒杀springboot--未来轻量级高性能的Java云原生微服务框架来啦 引子 自2003年Rod.Juergen 和 Yann开发并发布Spring项目后,J2EE 迎来了新的开始.在 2013 ...

  6. 微前端框架 之 qiankun 从入门到源码分析

    当学习成为了习惯,知识也就变成了常识.感谢各位的 点赞.收藏和评论. 新视频和文章会第一时间在微信公众号发送,欢迎关注:李永宁lyn 文章已收录到 github,欢迎 Watch 和 Star. 简介 ...

  7. golang 比较完美的通用框架,kratos v2.0 学习,一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。涵盖了互联网开发的常用功能模块的开发库。

    目录 前言 1,关于kratos v2.0 2,Principles 原则 2,Features 特色 3,Architecture 架构 4,总结 前言 本文的原文连接是: https://blog ...

  8. 常见微服务框架和对比分析

    常见的微服务框架 第一代微服务框架  SpringCloud Spring Boot:快速开发微服务的框架(可以快速开发出一个单体微服务项目) SpringCloud 为开发者提供了快速构建分布式系统 ...

  9. net微服务框架/c#/netcore微服务框架,一个轻量级的.Net 5.0微服务开发框架,同时也适用于单体架构系统的开发

    net微服务框架/c#/netcore微服务框架,一个轻量级的.Net 5.0微服务开发框架,同时也适用于单体架构系统的开发. 支持经典三层与DDD架构开发模式.集成了一系列主流稳定的微服务配套技术栈 ...

最新文章

  1. 转载:PHP JSON_ENCODE 不编码中文汉字的方法
  2. 图解ARP协议分析实例
  3. 删除排序链表中的重复元素Python解法
  4. python tkinter进度条_在python3.7中更新tkinter进度条
  5. 每天10分钟就能练出流利口语
  6. python真是最烂的语言_在大型项目上,Python 是个烂语言吗?
  7. SQL Server 日期+4位流水号
  8. 调整linux字体渲染,开始使用 Manjaro(添加源+字体渲染去模糊+软件安装+优化配置+常见错误)(30)...
  9. 匈牙利算法解决指派问题
  10. Linux——DHCP服务器搭建
  11. dwg如何转换成pdf格式?
  12. 树及树的算法(4) —— 红黑树
  13. windows 平台下curl使用报错: (3) [globbing] unmatched close brace/bracket in column 13
  14. mysql如何重复数据合并_mysql合并相同字段,不同的拼接在起后
  15. 列主元高斯消去法(c语言)(可以实现所有阶的)(超级详细)
  16. 海龟交易法则12_脚踏实地地测试
  17. 全网优秀IT博客导航
  18. 计算机网络必须包括,计算机网络硬件包括( )等几个方面。
  19. delete 和 delete []的真正区别
  20. 卸载ncurses_为什么在重新加载动态库时ncurses会失败?

热门文章

  1. fvm操作多个flutter的安装和使用教程
  2. ArcGIS宗地结构——编辑入门
  3. opencv 叠加文字_opencv3.1学习笔记(8) 绘制形状与文字
  4. 电脑开启同时登录多个微信
  5. Eolink神技之二、API全生命周期管理
  6. Meterpreter 提权
  7. 计算机中代表什么意思啊,计算机里的%是什么意思
  8. JRTHW跳闸合闸监视继电器
  9. 机器学习 GPU服务器租用平台推荐 各大平台对比 MistGPU 可白嫖!
  10. 转行类型的求职简历怎么写?