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

昆明网站做的好的公司哪家好在线营销推广

昆明网站做的好的公司哪家好,在线营销推广,山东省监理建设协会网站,网上商城网站开发公司背景 业务组有一些给开发用的后门接口,为了做到调用溯源,业务组最近需要记录所有接口的访问记录,暂时只需要记录接口的响应结果,如果调用失败,则记录异常信息。由于后门接口较多以及只是业务组内部轻度使用&#xff0…

背景

业务组有一些给开发用的后门接口,为了做到调用溯源,业务组最近需要记录所有接口的访问记录,暂时只需要记录接口的响应结果,如果调用失败,则记录异常信息。由于后门接口较多以及只是业务组内部轻度使用,因此使用了切面的方式实现。

方案

@EnableAspectJAutoProxy
@Aspect
@Component
@Slf4j
public class ResponseLogAspect {@Resourceprivate CommonConstants commonConstants;@Pointcut("@annotation(*.log.ResponseLog)")public void logPointcut() {}/*** 执行成功打印*/@AfterReturning(pointcut = "logPointcut()", returning = "result")public void log(JoinPoint joinPoint, Object result) {try {// 降级开关if (!commonConstants.getBoolean("interface.response.log.switch", true)) {return;}ResponseLog annotation = findAnnotation(joinPoint, ResponseLog.class);String metric = metric(annotation.value(), joinPoint);log.info("interface success: {}, result: {}", metric, result);} catch (Exception e) {log.error("log error", e);QMonitor.recordOne("interface_response_log_fail");}}/*** 执行失败打印*/@AfterThrowing(pointcut = "logPointcut()", throwing = "error")public void logError(JoinPoint joinPoint, Throwable error) {try {// 降级开关if (!commonConstants.getBoolean("interface.response.log.switch", true)) {return;}ResponseLog annotation = findAnnotation(joinPoint, ResponseLog.class);String metric = metric(annotation.value(), joinPoint);log.error("interface fail: {}, error: {}", metric, error.getMessage());} catch (Exception e) {log.error("log error", e);QMonitor.recordOne("interface_response_log_fail");}}/*** 监控指标* @param specificName 具体指标名* @param point 切点* @return 指标名称*/private String metric(String specificName, JoinPoint point) {if (StringUtils.isBlank(specificName)) {String clz = point.getTarget().getClass().getSimpleName();String mtd = point.getSignature().getName();return clz + "_" + mtd;} else {return specificName;}}/*** 注解查询* @param point 切点* @param annotationType 注解类型* @return 注解信息*/private <A extends Annotation> A findAnnotation(JoinPoint point, Class<A> annotationType) {MethodSignature signature = (MethodSignature) point.getSignature();return AnnotationUtils.findAnnotation(signature.getMethod(), annotationType);}
}

接下来只需要在后门接口上增加对应的注解即可:

    @RequestMapping(value = "save", method = RequestMethod.POST)@ResponseBody@ResponseLog("/voucher/save")public APIResponse<Boolean> save(HttpServletRequest request, @RequestBody VoucherCommit voucherCommit) {// 代金券保存接口}

加餐

  1. @Target({ElementType.METHOD}):指定该注解可以应用于方法。如果不加这个注解,则表示默认该注解可以应用到类与方法上,但是加上后就表示这个注解只能作用于方法,否则会报错。
  2. springboot项目由于存在spring-boot-autoconfigure依赖,会默认开启aop代理,所以注解@EnableAspectJAutoProxy可以不用加,但是由于可以在配置文件中修改默认开启的逻辑,所以建议加上避免失效。
  3. @Pointcut注解中的参数:@within和@annotation。@annotation注解用于匹配那些具有指定注解的方法,@within注解用于匹配那些具有指定注解的类中的所有方法,即使这些方法本身没有显式地标注注解。
    // 切点:匹配带有@OnlyIntranetAccess注解的类@Pointcut("@within(org.openmmlab.platform.common.annotation.OnlyIntranetAccess)")public void onlyIntranetAccessOnClass() {}// 切点:匹配带有@OnlyIntranetAccess注解的方法@Pointcut("@annotation(org.openmmlab.platform.common.annotation.OnlyIntranetAccess)")public void onlyIntranetAccessOnMethed() {}

http://www.khdw.cn/news/39978.html

相关文章:

  • 做有支付系统的网站一般需要多少钱沈阳专业seo排名优化公司
  • 建设部网站事故快报引流推广是什么意思
  • 成立公司注意事项辽宁seo推广
  • 杭州哪家做网站比较好重庆自动seo
  • 湖北省建设用地预审网站晚上偷偷看b站软件推荐
  • 连云港建网站网络销售平台有哪些
  • 南京电商网站建设公司排名新网站怎么做优化
  • 建设银行u盾官方网站首页自己做网站需要什么条件
  • 手机上的网站是怎么做的百度浏览器广告怎么投放
  • 推荐网站建设的电销该怎么打网站seo优化服务
  • 咸阳 网站建设宁波seo教程推广平台
  • 深圳网站建设价格是多少旺道营销软件
  • 商丘网站制作公司最好的小说网站排名
  • 襄阳市做网站备案域名购买
  • 网站制作用的软件有哪些百度快照是什么意思?
  • 网站模板 酒类武汉seo排名
  • 可以看那种东西的浏览器企业关键词优化价格
  • 国内最大的网站建设公司排名网络推广吧
  • 主流网站开发语言有哪些软件开发
  • 新建网站如何推广网站优化seo
  • 表白网页制作软件app太原seo报价
  • 上海营销型网站开发网络营销是以什么为中心
  • 建设银行官方网站网址免费seo视频教程
  • html做的网站图片横着摆放外链是什么意思
  • 常州网站建设 最易广告网站推荐
  • vs2010如何做网站网店代运营合同
  • 公众号开发微商城seo网站推广的主要目的包括
  • 飞行时代网站建设国内新闻大事
  • 做网站的专业叫啥成都新站软件快速排名
  • interidea 做网站网站优化设计公司