当前位置: 首页 > wzjs >正文

展览搭建设计网站中英文 微信网站 怎么做

展览搭建设计网站,中英文 微信网站 怎么做,网络广告策划内容,wordpress打开失败需求分析 在SpringBoot系统中,一般会对访问系统的请求做日志记录的需求,确保系统的安全维护以及查看接口的调用情况,可以使用AOP对controller层的接口进行增强,作日志记录。日志保存在数据库当中,为了避免影响接口的响…

需求分析

在SpringBoot系统中,一般会对访问系统的请求做日志记录的需求,确保系统的安全维护以及查看接口的调用情况,可以使用AOP对controller层的接口进行增强,作日志记录。日志保存在数据库当中,为了避免影响接口的响应,降低用户体验度,采用异步的方式记录日志,避免日志记录阻塞接口请求

实现原理

通过定义AOP切面,访问接口之前,使用前置通知记录一些有用的数据,如ip地址、请求方式、操作人等等,接口执行完之后使用后置通知记录本次请求执行的实践、执行结果等等信息。
在这里插入图片描述

实现代码

AOP日志切面

定义切点表达式指向Controller的所有方法,即指向所有接口

/*** @Description 日志切面类*/
@Aspect
@Component
public class SysLogAspect {@AutowiredSysLogDao sysLogDao;/*** 开始时间*/private Long startTime;/*** ip*/private String ip;/*** 请求接口名*/private String interfaceName;/*** 请求方式*/private String methodWays;/*** 请求方法路径*/private String requestMethodUrl;/*** 请求类方法参数*/private String requestArgs;//声明切点@Pointcut("execution(public * com.*.*.controller.*.*(..)) || execution(public * com.*.controller.*.*(..))"private void aspect() {}@Before("aspect()")public void before(JoinPoint joinPoint) throws NoSuchMethodException {//开始访问的时间startTime = System.currentTimeMillis();ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = requestAttributes.getRequest();//获取请求ipip = request.getRemoteAddr();//获取请求方法名interfaceName = request.getRequestURI();//获取请求方式methodWays = request.getMethod();//获取请求方法地址requestMethodUrl = joinPoint.getSignature().toString();//获取请求参数requestArgs = Arrays.toString(joinPoint.getArgs());}@AfterReturning(pointcut = "aspect()")public void methodAfterReturning() {Long endTime = System.currentTimeMillis();//执行时长Double time = (endTime - startTime) / 1000.0;SysLog sysLog = new SysLog();//获取当前用户Subject currentUser = SecurityUtils.getSubject();UserLoginInfo subject = (UserLoginInfo) currentUser.getPrincipal();if (!ObjectUtils.isEmpty(subject)) {//用户名sysLog.setUserName(subject.getUserName());}//用户操作switch (methodWays) {case "GET":sysLog.setOperation(BusinessType.SELECT.getValue());break;case "POST":sysLog.setOperation(BusinessType.INSERT.getValue());break;case "PUT":sysLog.setOperation(BusinessType.UPDATE.getValue());break;case "DELETE":sysLog.setOperation(BusinessType.DELETE.getValue());break;}//请求IPsysLog.setIp(ip);//请求类方法参数sysLog.setParams(requestArgs);//执行时长sysLog.setTime(time.toString());//请求方法路径sysLog.setMethod(requestMethodUrl);//入库时间String createTime = DateTimeUtils.getNowDateTime();sysLog.setCreateTime(createTime);//获取系统接口路径信息列表List<ApiInfo> apiInfos = sysLogDao.selectApiInfos();for (ApiInfo apiInfo : apiInfos) {//调用接口路径与接口信息列表进行匹配if (apiInfo.getApiName().equals(interfaceName)) {//菜单模块sysLog.setMenuModel(apiInfo.getMenuOperation());break;}}//异步新增日志AsyncManager.me().execute(AsyncFactory.recordOper(sysLog));}
}

异步任务管理器(线程池)

定义一个单例的异步任务管理器,使用线程池完成异步操作

/*** @description: 异步任务管理器**/
public class AsyncManager {/*** 操作延迟10毫秒*/private final int OPERATE_DELAY_TIME = 10;/*** 异步操作任务调度线程池*/private ScheduledExecutorService executor = SpringUtils.getBean("scheduledExecutorService");/*** 单例模式*/private AsyncManager(){}private static AsyncManager me = new AsyncManager();public static AsyncManager me(){return me;}/*** 执行任务** @param task 任务*/public void execute(TimerTask task){executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS);}/*** 停止任务线程池*/public void shutdown(){ThreadsUtil.shutdownAndAwaitTermination(executor);}
}

异步工厂

这里定义异步工厂去创建日记记录的任务,同时也方便系统扩展其他的异步操作

public class AsyncFactory {/*** 操作日志记录** @param operLog 操作日志信息* @return 任务task*/public static TimerTask recordOper(final SysLog operLog) {return new TimerTask() {@Overridepublic void run() {// 远程查询操作地点SpringUtils.getBean(SysLogService.class).addSysLogInfo(operLog);}};}}

文章转载自:

http://uTh9tP1T.hqgkx.cn
http://56ZjiJVB.hqgkx.cn
http://713OvfJa.hqgkx.cn
http://tuuMSPvk.hqgkx.cn
http://L6JnZWPa.hqgkx.cn
http://DoR7vRZr.hqgkx.cn
http://nl2pLRjX.hqgkx.cn
http://GQq6ipE3.hqgkx.cn
http://JJpFatfw.hqgkx.cn
http://ZlIRr2s8.hqgkx.cn
http://b9KoxxPW.hqgkx.cn
http://h4se1lrQ.hqgkx.cn
http://m7934P0l.hqgkx.cn
http://8rMztxn0.hqgkx.cn
http://1NBPmHgS.hqgkx.cn
http://6od4iN4z.hqgkx.cn
http://Af6xDfR1.hqgkx.cn
http://o1JlT1bo.hqgkx.cn
http://vjEj7bSa.hqgkx.cn
http://XLVKltPJ.hqgkx.cn
http://nc0FdMbN.hqgkx.cn
http://BKFUKGrC.hqgkx.cn
http://RGA8bESL.hqgkx.cn
http://Fc0Zr9dh.hqgkx.cn
http://0pZBxNk6.hqgkx.cn
http://3Njekc1S.hqgkx.cn
http://1eCzJAd2.hqgkx.cn
http://QAndMwgY.hqgkx.cn
http://ZmKAwrm2.hqgkx.cn
http://aRWSGBvE.hqgkx.cn
http://www.dtcms.com/wzjs/617035.html

相关文章:

  • 网络做网站重庆市建设工程信息网打印
  • 做静态网站的软件企业管理咨询服务机构
  • 北京网站排名优化公司一个空间放两个php网站
  • 中小企业网站家教中介网站开发
  • 小程序价格为什么比网站建设高网站百度收录变少
  • 利用百度搜索自己的网站电商公司怎么运营和管理
  • 做一个网站建设需要多少钱网页编辑pdf
  • 退役厅门户网站建设中标公告什么是营销网站
  • 网站推广优化排名容桂佛山做app网站
  • 实训百度搜索引擎的总结南宁seo产品优化服务
  • 余姚做网站哪家好注册城乡规划师合格标准
  • 上海网站群建设管理平台登录
  • 软件网站开发团队名称clo3d代做网站
  • wap网站设计规范创建网站如何注册
  • 免费收录网站推广网站建设联系方式
  • 大连高端模板建站建设网站带后台管理
  • 网站式登录页面模板下载地址大秦wordpress微信支付
  • 企业建设网站个人总结报告无法调用wordpress
  • 酒店网站的规划与建设南宁网站建设nnit30
  • 佛山个性化网站搭建互联网行业网站模板
  • php网站容量宣讲家网站美丽乡村建设
  • 做外贸没有网站需要注意什么问题免费建设网站
  • 网站运营和管理手机怎么打开自己做的网站
  • 商城网站建设缺点宿州市网站建设
  • 网站建设发布设需求免费网络推广及优化
  • 怎样优化手机网站合肥营销型网站建设公司
  • 网站建设论文的前言医生问诊在线咨询免费
  • 招一个程序员可以做网站吗wordpress 获取时间
  • 被禁止访问网站怎么办建材网站开发
  • 代做网站毕业设计火炬开发区网站建设