Martian分析:轻量级微服务网络框架试用(Mars)
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)相关推荐
- 分析一下微应用框架(一)
前言 对于大型前端应用的演进,微应用架构是一种尝试,微应用技术在端上本质就是一个组件资源的管理,组件可以是页面,也可以是一个弹框内容,甚至极端一点把一个逻辑很复杂的按钮作为一个应用来接入.在 2017 ...
- Jeecg-P3 1.0.1版本发布,轻量级微服务框架
JEECG-P3微服务框架 Jeecg-P3是一款轻量的JAVA微服务框架,类似spring-boot,采用Springmvc+Velicity实现,插件开发与容器技术最佳实现,目前已开发" ...
- abp vNext微服务框架分析
abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...
- 【转】abp vNext微服务框架分析
abp vNext新框架的热度一直都很高,于是最近上手将vNext的微服务Demo做了一番研究.我的体验是,vNext的微服务架构确实比较成熟,但是十分难以上手,对于没有微服务开发经验的.net人员来 ...
- 秒杀springboot——未来轻量级高性能的Java云原生微服务框架来啦
秒杀springboot--未来轻量级高性能的Java云原生微服务框架来啦 引子 自2003年Rod.Juergen 和 Yann开发并发布Spring项目后,J2EE 迎来了新的开始.在 2013 ...
- 微前端框架 之 qiankun 从入门到源码分析
当学习成为了习惯,知识也就变成了常识.感谢各位的 点赞.收藏和评论. 新视频和文章会第一时间在微信公众号发送,欢迎关注:李永宁lyn 文章已收录到 github,欢迎 Watch 和 Star. 简介 ...
- golang 比较完美的通用框架,kratos v2.0 学习,一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。涵盖了互联网开发的常用功能模块的开发库。
目录 前言 1,关于kratos v2.0 2,Principles 原则 2,Features 特色 3,Architecture 架构 4,总结 前言 本文的原文连接是: https://blog ...
- 常见微服务框架和对比分析
常见的微服务框架 第一代微服务框架 SpringCloud Spring Boot:快速开发微服务的框架(可以快速开发出一个单体微服务项目) SpringCloud 为开发者提供了快速构建分布式系统 ...
- net微服务框架/c#/netcore微服务框架,一个轻量级的.Net 5.0微服务开发框架,同时也适用于单体架构系统的开发
net微服务框架/c#/netcore微服务框架,一个轻量级的.Net 5.0微服务开发框架,同时也适用于单体架构系统的开发. 支持经典三层与DDD架构开发模式.集成了一系列主流稳定的微服务配套技术栈 ...
最新文章
- 转载:PHP JSON_ENCODE 不编码中文汉字的方法
- 图解ARP协议分析实例
- 删除排序链表中的重复元素Python解法
- python tkinter进度条_在python3.7中更新tkinter进度条
- 每天10分钟就能练出流利口语
- python真是最烂的语言_在大型项目上,Python 是个烂语言吗?
- SQL Server 日期+4位流水号
- 调整linux字体渲染,开始使用 Manjaro(添加源+字体渲染去模糊+软件安装+优化配置+常见错误)(30)...
- 匈牙利算法解决指派问题
- Linux——DHCP服务器搭建
- dwg如何转换成pdf格式?
- 树及树的算法(4) —— 红黑树
- windows 平台下curl使用报错: (3) [globbing] unmatched close brace/bracket in column 13
- mysql如何重复数据合并_mysql合并相同字段,不同的拼接在起后
- 列主元高斯消去法(c语言)(可以实现所有阶的)(超级详细)
- 海龟交易法则12_脚踏实地地测试
- 全网优秀IT博客导航
- 计算机网络必须包括,计算机网络硬件包括( )等几个方面。
- delete 和 delete []的真正区别
- 卸载ncurses_为什么在重新加载动态库时ncurses会失败?