杭州网站建设杭州手机网站建设wordpress文章打不开

bicheng/2026/1/17 1:28:20/文章来源:
杭州网站建设杭州手机网站建设,wordpress文章打不开,搭建网站用什么系统,wordpress删除图片业务背景 很久以前开源了一款 auto-log 自动日志打印框架。 其中对于 spring 项目#xff0c;默认实现了基于 aop 切面的日志输出。 但是发现一个问题#xff0c;如果切面定义为全切范围过大#xff0c;于是 v0.2 版本就是基于注解 AutoLog 实现的。 只有指定注解的类或…业务背景 很久以前开源了一款 auto-log 自动日志打印框架。 其中对于 spring 项目默认实现了基于 aop 切面的日志输出。 但是发现一个问题如果切面定义为全切范围过大于是 v0.2 版本就是基于注解 AutoLog 实现的。 只有指定注解的类或者方法才会生效但是这样使用起来很不方便。 如何才能动态指定 pointcut让用户使用时可以自定义切面范围呢 自定义注解切面原理 常规 aop 方式 Aspect Component EnableAspectJAutoProxy Deprecated public class AutoLogAop {Pointcut(within(com.github.houbb.auto.log.annotation.AutoLog) || annotation(com.github.houbb.auto.log.annotation.AutoLog))public void autoLogPointcut() {}/*** 执行核心方法** 相当于 MethodInterceptor** param point 切点* return 结果* throws Throwable 异常信息* since 0.0.3*/Around(autoLogPointcut())public Object around(ProceedingJoinPoint point) throws Throwable {// 日志增强逻辑}}发现这里的 Pointcut 注解属性是一个常量无法方便地动态修改。 于是去查资料找到了另一种更加灵活的方式。 可以指定 pointcut 的方式 我们通过 Value 获取属性配置的切面值给定默认值。这样用户就可以很方便的自定义。 /*** 动态配置的切面* 自动日志输出 aop* author binbin.hou* since 0.3.0*/ Configuration Aspect //EnableAspectJAutoProxy public class AutoLogDynamicPointcut {/*** 切面设置直接和 spring 的配置对应 ${}可以从 properties 或者配置中心读取。更加灵活*/Value(${auto.log.pointcut:within(com.github.houbb.auto.log.annotation.AutoLog)||annotation(com.github.houbb.auto.log.annotation.AutoLog)})private String pointcut;Bean(autoLogPointcutAdvisor)public AspectJExpressionPointcutAdvisor autoLogPointcutAdvisor() {AspectJExpressionPointcutAdvisor advisor new AspectJExpressionPointcutAdvisor();advisor.setExpression(pointcut);advisor.setAdvice(new AutoLogAdvice());return advisor;}}当然这里的 Advice 和以前的 aop 不同需要重新进行实现。 AutoLogAdvice 只需要实现 MethodInterceptor 接口即可。 /*** 切面拦截器** author binbin.hou* since 0.3.0*/ public class AutoLogAdvice implements MethodInterceptor {Overridepublic Object invoke(MethodInvocation methodInvocation) throws Throwable {// 增强逻辑}}介绍完了原理我们一起来看下改进后的日志打印组件的效果。 spring 整合使用 完整示例参考 SpringServiceTest maven 引入 dependencygroupIdcom.github.houbb/groupIdartifactIdauto-log-spring/artifactIdversion0.3.0/version /dependency注解声明 使用 EnableAutoLog 启用自动日志输出 Configurable ComponentScan(basePackages com.github.houbb.auto.log.test.service) EnableAutoLog public class SpringConfig { }测试代码 ContextConfiguration(classes SpringConfig.class) RunWith(SpringJUnit4ClassRunner.class) public class SpringServiceTest {Autowiredprivate UserService userService;Testpublic void queryLogTest() {userService.queryLog(1);}}输出结果 信息: public java.lang.String com.github.houbb.auto.log.test.service.impl.UserServiceImpl.queryLog(java.lang.String) param is [1] 五月 30, 2020 12:17:51 下午 com.github.houbb.auto.log.core.support.interceptor.AutoLogMethodInterceptor info 信息: public java.lang.String com.github.houbb.auto.log.test.service.impl.UserServiceImpl.queryLog(java.lang.String) result is result-1 五月 30, 2020 12:17:51 下午 org.springframework.context.support.GenericApplicationContext doClose切面自定义 原理解释 spring aop 的切面读取自 Value(${auto.log.pointcut})默认为值 within(com.github.houbb.auto.log.annotation.AutoLog)||annotation(com.github.houbb.auto.log.annotation.AutoLog) 也就是默认是读取被 AutoLog 指定的方法或者类。 当然这并不够方便我们希望可以想平时写 aop 注解一样指定 spring aop 的扫描范围直接在 spring 中指定一下 auto.log.pointcut 的属性值即可。 测试例子 完整测试代码 我们在配置文件 autoLogConfig.properties 中自定义下包扫描的范围 auto.log.pointcutexecution(* com.github.houbb.auto.log.test.dynamic.service.MyAddressService.*(..))自定义测试 service package com.github.houbb.auto.log.test.dynamic.service;import org.springframework.stereotype.Service;Service public class MyAddressService {public String queryAddress(String id) {return address- id;}}自定义 spring 配置指定我们定义的配置文件。springboot 啥的可以直接放在 application.properties 中指定此处仅作为演示。 Configurable ComponentScan(basePackages com.github.houbb.auto.log.test.dynamic.service) EnableAutoLog PropertySource(classpath:autoLogConfig.properties) public class SpringDynamicConfig { }测试 ContextConfiguration(classes SpringDynamicConfig.class) RunWith(SpringJUnit4ClassRunner.class) public class SpringDynamicServiceTest {Autowiredprivate MyAddressService myAddressService;Autowiredprivate MyUserService myUserService;Testpublic void queryUserTest() {// 不会被日志拦截myUserService.queryUser(1);}Testpublic void queryAddressTest() {// 会被日志拦截myAddressService.queryAddress(1);}}开源地址 为了便于大家学习项目已开源。 Github: https://github.com/houbb/auto-log Gitee: https://gitee.com/houbinbin/auto-log 小结 这个项目很长一段时间拘泥于注解的方式我个人用起来也不是很方便。 最近才想到了改进的方法人还是要不断学习进步。 关于日志最近还学到了 aspect 的编译时增强和基于 agent 的运行时增强这 2 种方式都很有趣有机会会做学习记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站页面优化技巧越秀网站建设推广

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

哈铁工程建设公司网站桓台做网站

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 公有云时序数据库SLA 运营商产品每服务周期服务可用率不低于99.9%衡量服务不可用数据指标从采…

wordpress程序增大网站代码在线优化

Java的市场情况 需求减少 人员增加 面试难度增加 1、Java高级开发,100份简历,筛选了20份,邀约20个人面试 面试机会:录取人数20:1 充分准备通过面试的前提 不要裸面!!! 背葵花宝典(…

多语言网站(如何实现网站的多语言版本 )岳阳公司网站开发

Go语言中的加密艺术:深入解析crypto/subtle库 引言crypto/subtle库概览ConstantTimeCompare函数深入解析ConstantTimeSelect函数应用详解ConstantTimeLessOrEq函数实践指南安全编程实践性能优化与最佳实践与其他加密库的比较总结 引言 在当今快速发展的互联网时代&…

阿里云的虚拟主机用什么做网站android手机软件开发教程

其他数据库对象 视图: 常见数据库对象——视图:从表中抽出的逻辑上相关的数据集合。 所以:1. 视图基于表。2. 视图是逻辑概念。3. 视图本身没有数据。 创建视图 创建语法与创建表类似,只需要将table → view即可: SQL> …

怎么做直播网站超管网站策划书3000

目录 1 数据的传输方式1.1 并行传输1.2 串行传输 2 同步传输和异步传输2.1 同步传输2.2 异步传输2.3 同步和异步传输对比 1 数据的传输方式 在数据通信中,数据传输方式有并行传输和串行传输两种 1.1 并行传输 定义:并行传输是指数据以成组的方式在多个…

腾讯企业邮箱域名可以做网站吗怎么上不到建设银行网站

上一个说软件测试简单的,已经被面试官问死了。。。 现在已经过了 ”不会但我会学“ 就能感动面试官的时代,随着供需关系的变化,不论是对于面试官还是面试者,面试的成本越来越高。为了筛选到更优秀的程序员,面试官们可谓…

网站新闻页设计肇庆网站建设方案维护

目录 01 ​​​​​​​路由器越用越慢很平常 02 国区设置不要乱用 03 很容易被遗忘的IPv6设置 04 学会自我检查掉线问题 05 番外篇:测试自己的网速 “耳机、音箱通过一定时间的煲机,表现效果会变好,可为何家里WiFi网络却老是给人越用越慢、越…

外包网站问些什么问题展厅设计平面布置图

最优队列有多种叫法,什么小根堆,大根堆,小顶堆,大顶堆。 队列分多种,线性队列(简单队列),循环队列,最优队列等等。 最优队列,可以看作堆叠箱子,…

云盘网站如何做网站制作要求

作者通过SimpleSSD仿真模型,采用SLCQLC混合模式来开展进一步的验证工作。评估过程中,当写入请求到达固态硬盘时,首先会被写入缓存(DRAM),然后才被回写到NAND。文中引入了一个名叫做LRU(Least Recently Used…

工商网站查询企业信息官网全国静态化网站的缺点

第一个版本 对android中MIME类型的理解 初始MIME类型,是在学习ContentProvider的时候。 当在创建自己的ContentProvider的时,需要从抽象类ContentProvider中派生出自己的子类,并实现其中5个抽象方法: query(Uri, String[], Strin…

网站建设评比细则wordpress公式 插件

目录 HTTP GET 和 POST 的区别 GET 和 POST 方法都是安全和幂等的吗 接口幂等实现方式 说说 post 请求的几种参数格式是什么样的? HTTP特性 HTTP(1.1) 的优点有哪些? HTTP(1.1) 的缺点有哪些&#x…

建设银行官方网站打不开啊怎样建设一个网站赚钱

在VSCode中安装插件Todo Tree。按下快捷键ctrlshiftP,输入setting.jspn,选择相应的配置范围,我们选择的是用户配置 Open User Settings(JSON),将以下代码插入其中。 //todo-tree 标签配置从这里开始 标签兼容大小写字母(很好的功…

专业做网站关键词排名下掉医院 网站建设 中企动力

Binary Encoding:二进制编码方法详解 Binary Encoding是将每个整数表示为二进制数,然后按位拆分为多个二进制变量。这种方法旨在减少维度,同时避免了One-Hot Encoding的高维稀疏问题。 Binary encoding for categorical variables, similar …

h5做网站什么软件设计分公司加盟

公司文件防泄密管理系统是一种综合性的解决方案,旨在确保企业文件的安全性和保密性,防止内部员工或外部攻击者非法获取、泄露或篡改敏感信息。 PC端:https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是关于…

网店运营推广登录入口整站优化案例

在一个化装舞会上拍下的一位和蔼热情的瑞士母亲。菲律宾女孩好象是典型的法国帅哥。穿着印度肚皮舞服装的美国女孩。穿着蒙古袍的法国帅哥和美丽的像白雪公主一样的瑞士姑娘。蒙古袍穿在他们身上还挺合适。

一家做公司点评网站wordpress积分站内搜索

重置 Grafana 登录密码 通过命令行重置 admin 密码 # 如果是通过二进制安装的 Grafana grafana-cli admin reset-admin-password <新密码>

阳西哪里有做网站企业主页的特点

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

泰州网站建设工作国外十大黄冈推广

文章目录 HarmonyOS详解ArkTS详解ArkTS装饰器深度解析:@Styles、@Extend、和stateStyles@Styles装饰器:优雅的组件样式定义与重用@Extend装饰器:扩展原生组件样式的利器stateStyles:多态样式的应用示例场景:装饰器的联合使用进阶应用:动态样式与交互最佳实践:样式的组织…

网站 二级域名需要备案吗江门当地的免费网站优化

1.查看帮助命令 help db.yourColl.help(); db.youColl.find().help(); db.help()&#xff1a;显示数据库操作命令&#xff0c;里面有很多的命令 db.foo.help()&#xff1a;显示集合操作命令&#xff0c;同样有很多的命令&#xff0c;foo指的是当前数据库下&#xff0c;一个叫f…