一个springboot的基础库,负责springboot项目的一些初始化工作,例如日志切面,接口通用返回格式baseController
软件架构说明
- jdk 1.8
- fastjson
- spring aop
- spring web
- hutool
- 引入依赖即可,
<dependency>
<groupId>com.gitee.free2free</groupId>
<artifactId>base-spring-boot-starter</artifactId>
<version>2.0.0-RELEASE</version>
</dependency>
- xxxx
- xxxx
- baseController:只需在controller上继承baseController即可
@RestController
public class DemoController extends BaseController {
@RequestMapping("/demo1")
public Result demo1() {
return success();
}
}
- 使用日志切面:只需要在接口上添加@AroundLog注解即可
/**
* 最基础用法 @AroundLog
* 请求url:http://127.0.0.1:8080/log1/value1?arg2=value2
*
* @param arg1 参数1
* @param arg2 参数2
* @return 返回结果
*/
@AroundLog
@RequestMapping("/log1/{arg1}")
public Result log1(@PathVariable String arg1, @RequestParam String arg2) {
Map<String, Object> map = new HashMap<>(16);
map.put("arg1", arg1);
map.put("arg2", arg2);
return success(map);
}
3.异常处理ExceptionHandler
不新建ExceptionHandler类的话,会有baseExceptionHandler行使一些默认的异常处理。
如果想实现自定义的异常处理,可以新建自己的ExceptionHandler,只需继承BaseExceptionHandler, 重写BaseExceptionHandler的相关方法即可
/**
* 项目自定义 异常处理,继承 baseExceptionHandler
*
* @author lfg
* @version 1.0
*/
@Slf4j
@ControllerAdvice
public class ProjectExceptionHandler extends BaseExceptionHandler {
public ProjectExceptionHandler() {
super();
}
//--------------------------------------可以自定义其他异常处理方法、或重写父类方法-----------------------------
/**
* 处理 ProjectException
*
* @param response response
* @param e 异常
*/
@ExceptionHandler(ProjectException.class)
public void handleBaseException(HttpServletResponse response, ProjectException e) {
log.error("ProjectException:{}", e.getMessage(), e);
print(response, JSONObject.toJSONString(new Result(e.getCode(), e.getMessage())));
}
@Override
protected void noticeDing(Exception e) {
super.noticeDing(e);
}
}
4.钉钉异常通知
配置文件
base:
ding:
web-hook: https://oapi.dingtalk.com/robot/send?access_token=739cee21357169a79a97ebf6cec7e5d01a7f46b9f7a3fd75ab2dada541b0e009
secret: SECc1fcf0b97789885185d674602698659829c12aa128a6fef0f0de7f18c168f5a5
当发生DingException 或 其他未在exceptionHandler中捕获的一般异常时,会发钉钉通知
/**
* 钉钉异常通知demo
* 需要配置文件中 配置 base.ding.web-hook,才会触发推送
* <p>
* 1.自定义关键词校验: 需配置 '告警' 关键字
* 2.签名校验: 需配置 base.ding.secret
* <p>
* 官方文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
* <p>
* ps:
* 1.可以自定义钉钉图片url pictureUrl
* 2.可以自定义跳转url,钉钉通知点击打开后的页面,程序会自动在该页面后拼接?sessionId=xxx&msg=xxx,可以实现自定义的异常占线方式
*
* @author lfg
* @version 1.0
*/
@RestController
public class DingController extends BaseController {
/**
* 其他自定义异常:http://127.0.0.1:8080/ding1/value1?arg2=value2
*
* @return response
*/
@RequestMapping("/ding1/{arg1}")
public Result exception4(@PathVariable String arg1, @RequestParam String arg2) throws Exception {
throw new Exception("数组下标越界");
}
}
5.通用接口调用
@SpringBootTest
@RunWith(SpringRunner.class)
public class ApiTest {
@Test
public void get1() {
BaseApi baseApi = new BaseApi();
TranslateRequest request = new TranslateRequest();
request.setLocations("39.12,116.83;30.21,115.43");
request.setType(1);
request.setKey(KEY);
TranslateResponse response = baseApi.execute(request);
Assert.assertTrue(response.isSuccess());
}
}
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
- 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
- 码云官方博客 blog.gitee.com
- 你可以 https://gitee.com/explore 这个地址来了解码云上的优秀开源项目
- GVP 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
- 码云官方提供的使用手册 https://gitee.com/help
- 码云封面人物是一档用来展示码云会员风采的栏目 https://gitee.com/gitee-stars/