MornBoot是基于SpringBoot的标准API框架,致力于为JavaWeb项目提供标准化API。MornBoot初衷是提供简洁的、可拓展的通用功能实现,为SpringBoot项目提供一个良好的开端。MornBoot侧重于开发风格、标准、规范,提供开箱即用的优秀实践。
如果你的所有项目都使用同一套API开发,那么更新、维护将变得多么简单!
- “零配置”轻量级框架
- 相同API,不同结果呈现
- 极简风格代码,良好可读性
- 友好的IDE提示信息
MornBoot没有强制依赖SpringBoot,你必须在项目中引入SpringBoot相关包,好处是你可以自由选择依赖版本。建议SpringBoot版本为1.5.X+,尚未测试最低兼容版本。
[dev]
表示该功能正在开发中[expect]
表示该功能将在后续版本中推出
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>
如果想体验最新功能,可以使用快照版本。快照版本需要配置
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>
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"
}