# appoint-api **Repository Path**: practice-pine/appoint-logger ## Basic Information - **Project Name**: appoint-api - **Description**: 需要在指定接口的前后处理一些与业务逻辑无关的事务,并且不会影响业务逻辑的运行。例如日志记录,性能监控,访问拦截、权限控制(基于Api的权限控制)等等。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-10-12 - **Last Updated**: 2023-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # appoint-api #### 介绍 需要在指定接口的前后处理一些与业务逻辑无关的事务,并且不会影响业务逻辑的运行。例如日志记录,性能监控,访问拦截、权限控制(基于Api的权限控制)等等。 #### 安装教程 ``` com.gitee.practice-pine appoint-api-spring-boot-start 1.0-RELEASES ``` #### 使用说明 1. 导入pom依赖 2. 实现AppointApiMapper接口,每一个方法进行自定义处理 ``` @Slf4j @Component public class AppointApiTestA implements AppointApiMapper { @Override public String before(Object[] objects, HttpServletRequest httpServletRequest) { log.info("AppointApiTestA -> before"); for (Object object : objects) { log.info("inParam -> {}" , JSON.toJSONString(object)); } return "11"; } @Override public void after(String s, Object o) { log.info("AppointApiTestA -> after"); log.info("logId -> {}" , JSON.toJSONString(s)); log.info("outParam -> {}" , JSON.toJSONString(o)); } @Override public void afterThrowing(String s, Throwable throwable) { log.info("AppointApiTestA -> afterThrowing"); log.info("logId -> {}" , JSON.toJSONString(s)); log.info("Throwable -> {}" , JSON.toJSONString(throwable)); } @Override public void finalProcess(Object[] objects, Object o, Throwable throwable, AppointApiProperty appointApiProperty, Method method) { log.info("AppointApiTestA -> finalProcess"); for (Object object : objects) { log.info("inParam -> {}" , JSON.toJSONString(object)); } log.info("outParam -> {}" , JSON.toJSONString(o)); log.info("Throwable -> {}" , JSON.toJSONString(throwable)); log.info("AppointApiProperty -> {}" , JSON.toJSONString(appointApiProperty)); log.info("Method -> {}" , JSON.toJSONString(method)); } } ``` 3. 配置(yml) ``` appoint: logger: properties: - apiGroupName: A loggingType: bean loggingPath: cn.edu.lnpu.config.aop.AppointApiTestA ``` 4 指定Api ``` @AppointApi(apiGroupName = "A") @PostMapping("/getAll") @CrossOrigin public ResidentQueryOutDto getAll(@RequestBody ResidentQueryInDto inDto) { return outDto; } ``` 上述步骤是实现单组的,如果需要实现多组,请重复2,3,4步。