/morn-boot-projects

Morn Boot Projects - 基于Spring Boot的系列开发工具包

Primary LanguageJavaApache License 2.0Apache-2.0

Morn Boot Projects

基于SpringBoot的系列开发工具包,MornBoot不是SpringBoot的替代品,而是其向业务方向延伸。MornBoot初衷是提供简洁的、可拓展的通用业务实现,为SpringBoot项目提供一个良好的开端。MornBoot侧重于开发风格、标准、规范,提供可供参考的优秀实践。

Features

  • “零”配置实现通用业务
  • 极简风格代码,良好可读性
  • 友好的IDE提示信息
  • 支持自定义扩展

Getting Help

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

Definitions

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

Quick Start

当前版本:1.0.0

<!--自动化配置-->
<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>

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提供通用的注解及处理器,完成对操作日志的监听和处理。

// 操作分组
@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"
}

更多示例