Skip to content
本页导航




快速开始

Spring Boot 父类

spring-cloud-investoday-parent是一个特殊项目,它为我们应用程序提供默认配置和完整的依赖树,以快速构建Spring Boot项目。它还为 Maven 插件提供默认配置,例如maven-failsafe-pluginmaven-jar-pluginmaven-surefire-pluginmaven-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,默认true

  • aix.api-docs.enabled 启用API文档的访问,默认值true

  • aix.api-docs.internal.enabled 禁用swager-ui访问的时候,是否启用swagger-ui的内网IP访问,默认值true

  • aix.web.rest.exception.detail.enabled 启用 restAPI 出现错误时,是否返回 track 的详情信息,默认值 false

  • aix.web.rest.exception.hide-exception.enabled 隐藏exception详情(不包含业务异常),默认值 false 2.2.11及以上版本

  • aix.web.rest.exception.hide-exception.default-desc 隐藏exception详情的默认描述, 默认值 Server Error 2.2.11及以上版本

  • aix.web.rest.exception.hide-all-exception.enabled 隐藏全部exception, 默认值 false 2.2.11及以上版本

  • aix.web.request.param.camel_to_underline.enabled 启用 Request 请求参数转换为下划线方式,默认值 false

  • aix.web.request.spec_contain_packages 统一API规范需要处理的Controller包名,多个用逗号隔开,默认值

  • aix.web.request.hello_controller.enabled 启用helloController的访问,默认值true

  • aix.web.request.actuator.enabled 启用actuator的内网访问,默认值true 2.2.10及以上版本

  • aix.web.global.exception.enabled 启用全局异常处理,默认值true 2.4.3及以上版本

  • aix.web.pre-log.enabled 启用全局前置请求日志输出,默认值 false 2.3.10、2.4.4及以上版本

  • aix.web.log.enabled 启用controller访问日志,默认值true 2.7弃用,默认打印,不可关闭

  • aix.web.response.output.enabled 启用响应结果输出,默认值 false 2.3.10、2.4.4及以上版本

  • aix.web.response.output.max-size 响应结果输出最大大小,默认值 1024 2.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 参数默认值设置,默认值 false

  • aix.param.page.default 参数page默认值, 默认值 1

  • aix.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图鉴

Issue

如果对此SDK有任何问题,请前往 TAPD 提出,并指定给 liq, 谢谢。

插件

lhiro