Mars-Java

mars-java介绍

官网地址

开发背景

做web后端的可能都知道spring,这也是唯一一个后端框架,无论市面上运用SSM还是SSH,万变不离其宗都离不开spring,spring已有多年历史,而mars-java才刚刚展露风采,但是spring也有自己的不足之处,而一个全新的东西,所有都是重新开始,有望成为全新的国内的后端开源框架。

JS框架有 react,vue,AngularJS,而后端框架只有spring,很多人说我是造轮子,但我不这么认为,所以…是时候挑战一下spring了,我希望每个人都能参与进来,贡献代码,让后端开发有更多的选择

我们的使命是,让写代码变成一件快乐的事。

不希望程序员在项目搭建上花费太多时间,又或者不断的重复一些套路。 虽然现在的版本还未达到我们的愿景,但是,我相信不会太远。

mars-java是什么

Mars-java是一个不需要容器的javaWeb开发框架,以netty作http服务管理,支持AOP,IOC,MVC,有自己的JDBCTemplete,并且集成了Mybatis作为持久层,除此之外还提供了Mars-config 来支撑远程配置,Mars-extends 来支持更多的功能以及工具类,框架持续迭代中,未来将更加强大。

能做什么

  • 使用netty做的http服务
  • 使用JWT做的会话管理
  • 支持AOP,IOC,MVC,Mybatis,事务管理
  • 通过 Mars-cloud 可以分布式部署
  • 通过 Mars-config 可以远程配置【开发中】

缺点有哪些

  • 只支持main方法启动,不可以打war包
  • 只能给前端返回json,二进制流,不支持转发和重定向
  • 目前刚刚起步,使用中还存在很多问题希望能够慢慢改进

注意事项:

  1. 项目只可以打jar包,不可以打war包,不然运行不了
  2. 不支持容器运行,只能打jar包后,通过命令运行jar包
  3. 需要jdk8 以上的版本
  4. 本项目的mysqljdbc驱动jar包,用的是8.x版本,如果要降级的话,可以将这个jar包排除,再引入你要的jdbc驱动jar就好了
  5. 数据源用的是阿里巴巴的Druid数据源

官方文档

Document

官方源码

GitHub源码地址
GITEE源码地址

扩展包

支持redis连接

封装了 Email, MD5, AES 和 其他工具类 并 集成了hutool

生态

在这里插入图片描述

简单对比

名称AOPIOCMVC持久层configuration filestartup method
Mars-javaOKOKOK目前支持mybatis,有自己的JDBCTemplete只有一个,并只支持远程配置Main方法
SpringbootOKOKOK支持大部分主流框架只有一个,并只支持远程配置Main方法,War包+Tomcat

开发案例

创建简单的Maven项目

在这里插入图片描述

导入pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mars</groupId>
    <artifactId>mars_java</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <!--main方法所在的类-->
                            <mainClass>com.mars.Start</mainClass>
                            <!-- 是否指定项目classpath下的依赖 -->
                            <addClasspath>true</addClasspath>
                            <!-- 指定依赖的时候声明前缀 -->
                            <classpathPrefix>./lib/</classpathPrefix>
                            <!--依赖是否使用带有时间戳的唯一版本号,如:xxx-1.3.0-20121225.012733.jar-->
                            <useUniqueVersions>false</useUniqueVersions>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.github.yuyenews</groupId>
            <artifactId>mars-start-simple</artifactId>
            <version>2.1.6</version>
        </dependency>
    </dependencies>
</project>

创建启动类

public class Start {
    public static void main(String[] args) {
        StartMars.start(Start.class);
    }
}

创建启动类需要注意启动类的位置,不然会报错,启动服务的main方法所在的类,必须放在两层包名中,比如[com.mars,com.test]等,不允许放在[com,cn]等包中,更不允许放在包外面

在这里插入图片描述

创建Controller层

@Controller
public class TestController {

    /**
     * 方法的参数 可以是HttpRequest,HttpResponse以及自定义实体对象,顺序不限
     */
    @MarsMapping(value = "test",method = RequestMetohd.GET)//指定接口名称以及请求方式
    @MarsLog  //用来打印接口请求日志
    public String test(HttpRequest httpRequest, HttpResponse response,Object object){// Object为 自定义实体类名 参数名
        System.out.println("httpRequest = " + httpRequest + ", response = " + response);
        return "hello world";
    }

}

然后启动测试访问:

http://域名/MarsMapping的value值

需要响应给前端的数据,直接在方法里返回即可,框架会自动转换成json格式 并响应
在这里插入图片描述
–作者:额滴神

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值