Giter VIP home page Giter VIP logo

morn-boot-projects's Introduction

Morn Boot Projects

996.icu Build Status Codacy Badge codecov LICENSE LICENSE

MornBoot是基于SpringBoot的标准API框架,致力于为JavaWeb项目提供标准化API。MornBoot初衷是提供简洁的、可拓展的通用功能实现,为SpringBoot项目提供一个良好的开端。MornBoot侧重于开发风格、标准、规范,提供开箱即用的优秀实践。

如果你的所有项目都使用同一套API开发,那么更新、维护将变得多么简单!

Features

  • “零配置”轻量级框架
  • 相同API,不同结果呈现
  • 极简风格代码,良好可读性
  • 友好的IDE提示信息

Getting Help

MornBoot没有强制依赖SpringBoot,你必须在项目中引入SpringBoot相关包,好处是你可以自由选择依赖版本。建议SpringBoot版本为1.5.X+,尚未测试最低兼容版本。

Definitions

  • [dev]表示该功能正在开发中
  • [expect]表示该功能将在后续版本中推出

Quick Start

RELEASE版本: 1.0.1

Maven Dependency

<!--自动化配置-->
<dependency>
  <groupId>site.morn.boot</groupId>
  <artifactId>morn-boot-autoconfigure</artifactId>
  <version>${morn.version}</version>
</dependency>
<!--核心库-->
<dependency>
  <groupId>site.morn.boot</groupId>
  <artifactId>morn-boot-core</artifactId>
  <version>${morn.version}</version>
</dependency>
<!--Web-->
<dependency>
  <groupId>site.morn.boot</groupId>
  <artifactId>morn-boot-web</artifactId>
  <version>${morn.version}</version>
</dependency>

快照版本: 1.0.2-SNAPSHOT

如果想体验最新功能,可以使用快照版本。快照版本需要配置Sonatype快照仓库,并确保你的本地Mirror不会覆盖SNAPSHOT仓库。

<repositories>
  <repository>
    <id>sonatype-nexus-staging</id>
    <name>Nexus Release Repository</name>
    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    <releases>
      <enabled>true</enabled>
    </releases>
  </repository>
  <repository>
    <id>sonatype-nexus-snapshots</id>
    <name>Sonatype Nexus Snapshots</name>
    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

Function

MornBoot提供快速构建应用提示消息和应用异常的工具类。使用ApplicationMessages生成应用消息:

ApplicationMessage message = ApplicationMessages.translateMessage("login.password-is-null");
log.info(message.toString());
// ApplicationMessage(code=login.password-is-null, message=登录密码不能为空, solution=请输入登录密码)

更多示例

MornBoot提供更多的注解对实例进行描述,使用IdentifiedBeanCache实例缓存检索需要的实例。

// 根据标签和目标类型检索Bean
BeanIdentify beanIdentify = BeanIdentify.builder().tags(ArrayUtils.merge("odd"))
    .target(TestBeanB.class)
    .build();
List<Object> search = identifiedBeanCache.beans(Object.class, beanIdentify);

更多示例

MornBoot可以对常见异常进行自动处理,当代码执行异常时,会自动捕获异常并解释为友好的提示信息。

MySQL唯一约束提示

{
    "code": "morn.error",
    "level": "error",
    "success": false,
    "message": "数据重复,user.username已存在"
}

更多示例

MornBoot提供JPA相关辅助功能,以简化JPA标准查询的开发工作。

// WHERE id = 1 AND username = 'timely-rain'
// password为空,所以忽略
Predicate[] equalAll = condition.equalAll();

// WHERE id = 1 
// password为空,所以忽略
Predicate[] equals = condition.equals("id", "password");

// AND username LIKE '%timely%'
Predicate keywords = condition.contain("username", "keywords");

更多示例

MornBoot提供通用的注解及处理器,完成对操作日志的监听和处理。

// 操作分组
@OperateGroup("user")
public class UserController {

  // 新增操作
  @OperateAction("add")
  Map<String, Object> addUser(Map<String, Object> user) {
    OperateArguments.add(user.get("username"));
    return user;
  }

  // 更新操作
  @OperateAction("update")
  Map<String, Object> updateUser(Map<String, Object> user) {
    OperateArguments.add(user.get("username"));
    OperateArguments.add(user.get("password"));
    throw new RuntimeException("异常测试");
  }
}

更多示例

构建消息

RestBuilders.successMessage();

输出结果

{
    "code": "success",
    "data": null,
    "level": "info",
    "message": "操作成功",
    "success": true
}

更多示例

校验方法

@PostMapping("/login")
public Object login(@Valid User user) {
    return null; // 校验失败时,此处代码不会执行
}

输出结果

{
    "code": "morn.error",
    "level": "error",
    "success": false,
    "message": "user.password个数必须在4和32之间,user.username不能为null"
}

更多示例

morn-boot-projects's People

Contributors

timely-rain avatar ct-mika avatar codacy-badger avatar jtmadgit avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.