Appearance
快速开始
Spring Boot 父类
spring-cloud-investoday-parent是一个特殊项目,它为我们应用程序提供默认配置和完整的依赖树,以快速构建Spring Boot项目。它还为 Maven 插件提供默认配置,例如maven-failsafe-plugin、maven-jar-plugin、maven-surefire-plugin和maven-war-plugin
除此之外,它还继承了spring-cloud-investoday-dependencies的依赖管理。
父类关系: spring-cloud-investoday-parent -> spring-cloud-investoday-dependencies -> spring-boot-starter-parent -> spring-boot-dependencies
使用方式:
xml
<parent>
<groupId>com.investoday.bootframework</groupId>
<artifactId>spring-cloud-investoday-parent</artifactId>
<version>3.4.1-SNAPSHOT</version>
</parent><parent>
<groupId>com.investoday.bootframework</groupId>
<artifactId>spring-cloud-investoday-parent</artifactId>
<version>3.4.1-SNAPSHOT</version>
</parent>Spring Boot 快速配置类
使用方式:
xml
<dependency>
<groupId>com.investoday.bootframework</groupId>
<artifactId>spring-cloud-investoday-starter</artifactId>
</dependency><dependency>
<groupId>com.investoday.bootframework</groupId>
<artifactId>spring-cloud-investoday-starter</artifactId>
</dependency>无需配置版本,Parent已指定
自定义: 请按下方其他SDK的用途自定义引入
定制SDK
Spring Cloud Investoday Core
Spring Boot的基础核心
Starter已集成必要xml<dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-core</artifactId> </dependency><dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-core</artifactId> </dependency>Spring Cloud Investoday API
API规范
Starter已集成必要xml<dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-api</artifactId> </dependency><dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-api</artifactId> </dependency>Spring Cloud Investoday Cloud
Spring Cloud 集成
Starter已集成必要xml<dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-cloud</artifactId> </dependency><dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-cloud</artifactId> </dependency>Spring Cloud Investoday Doc
Doc文档配置
Starter已集成必要xml<dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-doc</artifactId> </dependency><dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-doc</artifactId> </dependency>Spring Cloud Investoday Redis
Redis扩展,更多操作见插件
xml<dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-redis</artifactId> </dependency><dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-redis</artifactId> </dependency>Spring Cloud Investoday Springdoc
Springdoc 文档集成,使用教程
<dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-springdoc</artifactId> </dependency><dependency> <groupId>com.investoday.bootframework</groupId> <artifactId>spring-cloud-investoday-springdoc</artifactId> </dependency>
版本
更多的版本查看更新日志 (含Spring Boot、Spring Cloud的版本对应关系)
API规范
从此版本开始,全局启用 API2023 的规范,版本匹配优先级如下
- Param:
apiSpecVersion内部使用 - Header:
x-api-spec-version - Method注解:
@APISpec2019 - Class注解:
@APISpec2019 - 默认值: V2023
升级建议:引入新版本包后,将需要使用
2019 API规范的类加上@APISpec2019注解即可
使用说明
application 配置指南
基本类
aix.index-to-doc.enabled启动主页自动跳转swagger,默认trueaix.api-docs.enabled启用API文档的访问,默认值trueaix.api-docs.internal.enabled禁用swager-ui访问的时候,是否启用swagger-ui的内网IP访问,默认值trueaix.web.rest.exception.detail.enabled启用 restAPI 出现错误时,是否返回 track 的详情信息,默认值falseaix.web.rest.exception.hide-exception.enabled隐藏exception详情(不包含业务异常),默认值false2.2.11及以上版本aix.web.rest.exception.hide-exception.default-desc隐藏exception详情的默认描述, 默认值Server Error2.2.11及以上版本aix.web.rest.exception.hide-all-exception.enabled隐藏全部exception, 默认值false2.2.11及以上版本aix.web.request.param.camel_to_underline.enabled启用 Request 请求参数转换为下划线方式,默认值falseaix.web.request.spec_contain_packages统一API规范需要处理的Controller包名,多个用逗号隔开,默认值aix.web.request.hello_controller.enabled启用helloController的访问,默认值trueaix.web.request.actuator.enabled启用actuator的内网访问,默认值true2.2.10及以上版本aix.web.global.exception.enabled启用全局异常处理,默认值true2.4.3及以上版本aix.web.pre-log.enabled启用全局前置请求日志输出,默认值false2.3.10、2.4.4及以上版本启用controller访问日志,默认值aix.web.log.enabledtrue2.7弃用,默认打印,不可关闭aix.web.response.output.enabled启用响应结果输出,默认值false2.3.10、2.4.4及以上版本aix.web.response.output.max-size响应结果输出最大大小,默认值10242.3.10、2.4.4及以上版本logback日志 >= 2.6
logging.file.path 指定项目日志路径
logging.level.root 指定项目全局日志level
logging.level.com.investoday.boot.xx 指定包的日志level
logging.file.max-history 日志最大保留天数(默认30天)
logging.file.max-size 日志文件最大大小,超过阈值会使用压缩包保存(默认100MB)
logging.file.clean-history-on-start 应用启动时强制清除日志(默认false)
logging.config=classpath:logback-spring-level.xml 分级存放日志文件
业务类
aix.param.default.enabled参数默认值设置,默认值falseaix.param.page.default参数page默认值, 默认值1aix.param.pageSize.default参数pageSize默认值, 默认值10
Spring Cloud Investoday Starter
aix.debug.enabled框架Debug开关,默认: false, 此前aix.common-invest.debug.enabled失效
Swagger
Starter已升级至SpringFox 3.0
现有注解理论全支持,如果出现兼容问题,请自行微调
注解
@APISpecIgnore
规范忽略,由于特殊原因(如与第三方系统交互等)需要原状返回结果值时,请在controller进行 @APISpecIgnore (类或方法)注解,进行该注解的Mapping以下功能失效:
- API规范返回体处理
- API规范入参处理
- Document UI的入参为真实入参格式。
@APISpec2019
在引入新包的情况下,可以指定类或方法使用 V2019 的规范,这样达到逐步升级的目的。
入参及实体类
- 所有的业务型 controller 入参时,都会进行
大->小驼峰转换,后端请使用小驼峰格式来接收参数,前端也使用小驼峰格式来传递参数。 - Java代码规范为驼峰命名方式,请尽量避免其他格式的命名,如果下划线等
响应
- response header 中新增规范版本
x-api-spec-version, 前端、SDK调用可根据此标识执行不同逻辑
Controller 返回值
Controller的返回业务异常
如果业务逻辑出现业务异常,请抛自定义异常 BusinessException
java
throw new BusinessException("Error", "这是一个错误");throw new BusinessException("Error", "这是一个错误");Controller的正确返回值
java
//示例
public Object testRestController(){
//业务错误,直接抛异常
throw new BusinessException("Error", "这是一个错误");
//业务正确返回值(单个对象) - 直接返回
UpperCaseReturn upperCaseReturn = new UpperCaseReturn();
upperCaseReturn.setToTest("123");
return upperCaseReturn;
//业务正确返回值(对象集合) - 直接返回(不推荐)
List<UpperCaseReturn> lists = new ArrayList<>();
UpperCaseReturn upperCaseReturn = new UpperCaseReturn();
upperCaseReturn.setToTest("123");
UpperCaseReturn upperCaseReturn2 = new UpperCaseReturn();
upperCaseReturn2.setToTest("123");
lists.add(upperCaseReturn);
lists.add(upperCaseReturn2);
return lists;
//业务正确返回值(对象集合 + 分页数据) - 构建RestPageHelper返回
List<UpperCaseReturn> lists = new ArrayList<>();
UpperCaseReturn upperCaseReturn = new UpperCaseReturn();
upperCaseReturn.setToTest("123");
UpperCaseReturn upperCaseReturn2 = new UpperCaseReturn();
upperCaseReturn2.setToTest("123");
lists.add(upperCaseReturn);
lists.add(upperCaseReturn2);
RestPageHelper<UpperCaseReturn> restPageHelper = new RestPageHelper(lists);
restPageHelper.setTotalCount(0L);
restPageHelper.setPages(0);
restPageHelper.setPage(0);
restPageHelper.setPageSize(0);
restPageHelper.setHasNextPage(false);
restPageHelper.setNextPage(0);
restPageHelper.setLastPage(false);
return restPageHelper;
//过渡兼容(为了方便过渡现有系统,方法已设置为过时,需尽快切换)
Map<String, String> tmap = new HashMap<>(1);
tmap.put("t", "123");
return ComUtils.restResultHandler(0, "ok", tmap);
}//示例
public Object testRestController(){
//业务错误,直接抛异常
throw new BusinessException("Error", "这是一个错误");
//业务正确返回值(单个对象) - 直接返回
UpperCaseReturn upperCaseReturn = new UpperCaseReturn();
upperCaseReturn.setToTest("123");
return upperCaseReturn;
//业务正确返回值(对象集合) - 直接返回(不推荐)
List<UpperCaseReturn> lists = new ArrayList<>();
UpperCaseReturn upperCaseReturn = new UpperCaseReturn();
upperCaseReturn.setToTest("123");
UpperCaseReturn upperCaseReturn2 = new UpperCaseReturn();
upperCaseReturn2.setToTest("123");
lists.add(upperCaseReturn);
lists.add(upperCaseReturn2);
return lists;
//业务正确返回值(对象集合 + 分页数据) - 构建RestPageHelper返回
List<UpperCaseReturn> lists = new ArrayList<>();
UpperCaseReturn upperCaseReturn = new UpperCaseReturn();
upperCaseReturn.setToTest("123");
UpperCaseReturn upperCaseReturn2 = new UpperCaseReturn();
upperCaseReturn2.setToTest("123");
lists.add(upperCaseReturn);
lists.add(upperCaseReturn2);
RestPageHelper<UpperCaseReturn> restPageHelper = new RestPageHelper(lists);
restPageHelper.setTotalCount(0L);
restPageHelper.setPages(0);
restPageHelper.setPage(0);
restPageHelper.setPageSize(0);
restPageHelper.setHasNextPage(false);
restPageHelper.setNextPage(0);
restPageHelper.setLastPage(false);
return restPageHelper;
//过渡兼容(为了方便过渡现有系统,方法已设置为过时,需尽快切换)
Map<String, String> tmap = new HashMap<>(1);
tmap.put("t", "123");
return ComUtils.restResultHandler(0, "ok", tmap);
}日志
更多信息请查看Log
安全漏洞
以下记录为已出现安全问题的版本,请使用以下版本的服务尽快更新
spring-cloud-investoday-starter
| Starter版本 | Spring Boot版本 | 漏洞信息 | 备注 |
|---|---|---|---|
升级说明
Spring MVC 映射匹配策略
Spring Boot 2.6开始默认策略已从AntPathMatcher更改为PathPatternParser。
Banner 图鉴
更多信息查看 Banner图鉴
Issue
如果对此SDK有任何问题,请前往 TAPD 提出,并指定给 liq, 谢谢。