Aooms 基于 Spring Cloud 的微服务基础开发平台

程序名称:Aooms

授权协议: Apache

操作系统: 跨平台

开发语言: Java

Aooms 介绍


Aooms —— 基于SpringCloud的微服务基础开发平台

极速微服务开发,不止像JFinal一样简单

一款基于SpringCloud的微服务基础开发平台,旨在降低SpringCloud的复杂度,像使用JFinal一样简单,但又包含整体解决方案(本人是JFinal用户,从1.9版本开始现在也一直在使用,因此部分实现思路会借鉴JFinal的一些模式,感谢@JFinal作者波总提供这么优秀的框架),包含微服务相关的完整解决方案同时附加有权限管理、报表自定义、工作流、Cms等套件,可直接使用,Aooms基于Apache
Licence 2.0开源协议,关于编写此框架的一些初衷,可通过此处诞生了解。

  • (1)极简Controller

  • (2)基于sharding-sphere的多数据源支持

  • (3)基于Mybatis 实现的 Db + Record 极简模式,附带物理分页实现

  • (4)基于Consul的服务注册、发现

  • (5)服务熔断、限流、降级

  • (6)服务客户端、http客户端

  • (7)内置各种ID生成器(UUID、snowflake)

  • (8)穿透一切的数据对象DataBoss

  • (9)基于J2Cache的缓存

  • (10) 其他更多功能,等你发现.......

  • (1)权限管理 (实现中,基本完成)

  • (2)内容管理系统(规划中)

  • (3)报表系统(规划中)

  • (4)工作流系统(规划中)

  • (5)微信公众号(规划中)

  • (6)..............

1. Hello World

@RestController
public class HelloWorldController extends AoomsAbstractController {

    /**
     * 基础访问
     */
    @RequestMapping(/hello)
    public void hello(){
        String str = hello world !;
        this.renderText(str);
    };

    /**
     * 获取基本参数
     */
    @RequestMapping(/hello2)
    public void hello2(){
        String id = getParaString(id);
        logger.info(id = {} , id);
        this.renderText(id);
    };


    /**
     * 获取路径参数
     */
    @RequestMapping(/hello/{id})
    public void hello3(){
        String id = getPathString(id);
        logger.info(id = {} , id);
        this.renderText(id);
    };

    /**
     * 上传文件
     */
    @RequestMapping(/hello4)
    public void hello4(){
        MultipartFile multipartFile = this.getParaFile(upload);
        logger.info(fileName = {}, multipartFile.getName());
        this.renderText(success);
    };

    /**
     * json输出
     */
    @RequestMapping(/hello5)
    public void hello5(){
        UserVo userVo = new UserVo();
        userVo.setName(zhangsan);
        setResultValue(userVo,userVo);

        // 输出json
        this.renderJson();
        // this.renderJson(); 也可省略不写,默认会使用JSONRender
    };

    /**
     * json输出
     */
    @RequestMapping(/hello6)
    public void hello6(){
        UserVo userVo = new UserVo();
        userVo.setName(zhangsan);
        this.renderJson(userVo);
    };

    /**
     * 文件下载
     */
    @RequestMapping(/hello7)
    public void hello7(){
        this.renderFile(application.yml, this.getClass().getResourceAsStream(/application.yml));
    };

    /**
     * 图片输出
     * @return
     */
    @RequestMapping(/hello8)
    public void hello8(){
        this.renderImage(F:/1.png,F:/default.png);
    };

    /**
     * html输出
     * @return
     */
    @RequestMapping(/hello9)
    public void hello9(){
        this.renderHtml(标题 alert('hello world !'); );
    };

    /**
     * 模版页面输出
     * @return
     */
    @RequestMapping(/hello10)
    public void hello10(){
        ModelAndView mv = new ModelAndView();
        mv.addObject(name,lisi);
        mv.setViewName(/demo.html);
        this.renderThymeleaf(mv);
    };

    /**
     * 重定向
     * @return
     */
    @GetMapping(/hello11)
    public void hello11(){
        this.redirect(https://www.oschina.net);
    };

}

2. 用户管理示例

@RestController
@RequestMapping(/user)
public class UserController extends AoomsAbstractController {

    @Autowired
    private UserService userService;

    @RequestMapping(/findList)
    public void findList(){
        userService.findList();
    };

    @RequestMapping(/insert)
    public void insert(){
        userService.insert();
    };

    @RequestMapping(/update)
    public void update(){
        userService.update();
    };

    @RequestMapping(/delete)
    public void delete(){
        userService.delete();
    };
}


@Service
public class UserService extends GenericService {

    @Autowired
    private Db db;

    public void findList() {
this.setResultValue(AoomsVar.RS_DATA, db.findRecords(UserMapper.findList, SqlPara.SINGLETON));
    }

    @Transactional
    public void insert() {
Record user = Record.empty().setByJsonKey(form);
        db.insert(t_user,user);
    }

    @Transactional
    public void update() {
    Record user = Record.empty().setByJsonKey(form);
    db.update(t_user,user);
    }

    @Transactional
    public void delete() {
    db.deleteByPrimaryKey(t_user,getParaString(id));
    }
   
}

关于框架的一点声明,框架目前处于开发阶段,会不定期更新码云上的代码同时会有系统博客同步更新,另外此项目是带有学习性质的摸索、尝试,是为了给想学习微服务的人一个学习上的帮助,大家一起学习、探讨,感受一个微服务开发平台从0到诞生的过程,因为可能有的人想学但没有方向又或者所在公司技术体系比较老,不具备微服务的学习环境,所以构建了该工程,希望能帮到一些人同时对我自己也是一次锻炼,预计2018年底会有版本发出,供大家完整的参考。

Aooms 官网

https://gitee.com/cyb-javaer/Aooms

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


BlazeDS 是一个基于服务器的Java 远程控制(remoting)和Web消息传递(messaging)技术, 它能够使得后端的Java应用程序和运行在浏览器上的Adobe
OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。可以使用纯 Java
Volta 是一套开发工具,专为开发分布式、实时系统应用。它包括级联,控制流分析工具,
OpenDDS 是一个开源的 C++ 实现的 对象管理组织 OMG 的 数据分布式服务 (DDS) 。OpenDDS利用自适应通信环境(ACE)提供一个跨平台的环境。
JADE (Java Agent DEvelopment Framework) 是一个完全用Java语言实现的软件框架。它通过一个兼容 FIPA
FastMM ,在D2006和2007中已代替了原来的内存管理器。
WebRTC 是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌于2010年以6820万美元收购VoIP软件开发商 Global IT
gwtwiki - The Java Wikipedia API (Bliki engine),是一个 Wikipedia/Mediawiki 语法解析器,可以把 wiki 的文本转换成 HTML。它支持 wiki 标签,例如 bold, italic, headers, nowiki,
Esper 是一个复杂事件处理组件(CEP - Complex Event Processing),它有 Java 版本和 .NET 版本(NEsper)。
LuaTinker 的作者是Kwon-il Lee韩国人写的,最新的版本是0.2.C,这个C++ wrapper For Lua能够方便和
各种语言环境下gitignore文件的一个集合。
简介 ContentExtractor 是一个开源的网页正文抽取工具,用JAVA实现,具有非常高的抽取精度。
SwiftRandom 是一组函数集合,可以从不同的分布生成伪随机变量。 使用示例: //Single pseudorandom normal variable
java-linq-examples 是 101 个 LINQ 示例的 Java 移植版本。Android 兼容 Java 1.7. 此外还有以下语言移植版本:
mal,Make a Lisp,顾名思义,用图灵完备的编程语言写 Lisp 交互器,目前已经有35种不同语言的实现:
一个 Go 语言实现的中国行政区划查询工具。 介绍 最新中国行政区划,数据来源:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html
Teaf 简介 Tencent Easy ACE Framework,基于 ACE 的高性能轻量级服务框架,单进程多线程模型,支持 select/epoll 等多种网络
介绍 让 Guzzle 支持 Swoole 协程,这个项目目的就是这么简单明了! Guzzle-Swoole 是 Guzzle 的处理器(Handler),并没有对 Guzzle 本身代码进行修改,理论上可以兼容后续版本。
goproxy-shell goproxy服务端部署脚本 使用方法 wget --no-check-certificate https://github.com/sjz123321/goproxy-
1. pyMd2Doc介紹(pip版本) 利用python将markdown转换成带可收缩、可跳转到文本内容的目录文档。