Skip to content

基于SpringBoot的JavaWeb开发框架,致力于为JavaWeb项目提供标准化API。

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE
Unknown
LICENSE.996ICU
Notifications You must be signed in to change notification settings

xiaowen581/morn-boot-projects

 
 

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"
}

更多示例

About

基于SpringBoot的JavaWeb开发框架,致力于为JavaWeb项目提供标准化API。

Resources

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE
Unknown
LICENSE.996ICU

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 98.9%
  • HTML 1.1%