湛江专业建站优质商家wordpress 在线安装

diannao/2026/1/18 19:27:06/文章来源:
湛江专业建站优质商家,wordpress 在线安装,为什么网站建设要将access数据库文件变成asa,怎么推广自己的链接aop 获取注解注释的方法有时#xff0c;我想记录#xff08;通过slf4j和log4j #xff09;方法的每次执行#xff0c;查看其接收的参数#xff0c;返回的内容以及每次执行花费的时间。 这是我在AspectJ #xff0c; jcabi-aspects和Java 6注释的帮助下所做的事情#xf… aop 获取注解注释的方法 有时我想记录通过slf4j和log4j 方法的每次执行查看其接收的参数返回的内容以及每次执行花费的时间。 这是我在AspectJ jcabi-aspects和Java 6注释的帮助下所做的事情 public class Foo {Loggablepublic int power(int x, int p) {return Math.pow(x, p);} } 这是我在log4j输出中看到的 [INFO] com.example.Foo #power(2, 10): 1024 in 12μs [INFO] com.example.Foo #power(3, 3): 27 in 4μs 很好不是吗 现在让我们看看它是如何工作的。 带有运行时保留的注释 注释是Java 6中引入的一种技术。它是一种元编程工具它不会改变代码的工作方式但会为某些元素方法类或变量提供标记。 换句话说注释只是附加到可以查看和阅读的代码的标记。 有些注释仅在编译时可见-编译后在.class文件中不存在。 其他的在编译后仍然可见并且可以在运行时访问。 例如 Override是第一种类型其保留类型是SOURCE 而来自JUnit的Test是第二种类型保留类型是RUNTIME 。 Loggable 我在上面的脚本中使用的那个是jcabi-aspects中第二种类型的注释。 编译后它与.class文件中的字节码保持在一起。 同样重要的是要理解即使对power()方法进行了注释和编译它到目前为止也不会向slf4j发送任何内容。 它仅包含一个标记上面写着“请记录我的执行情况”。 面向方面的编程AOP AOP是一种有用的技术它允许在不显式更改源代码的情况下将可执行块添加到源代码。 在我们的示例中我们不想在类内部记录方法的执行情况。 相反我们希望其他类拦截对方法power()每次调用测量其执行时间然后将此信息发送给slf4j。 我们希望该拦截器理解我们的Loggable批注并记录对该特定方法power()每次调用。 而且当然相同的拦截器应用于将来我们将放置相同批注的其他方法。 这种情况完全符合AOP的初衷-避免在多个类中重新实现某些常见行为。 日志记录是我们主要功能的补充功能我们不想使用多个日志记录指令来污染我们的代码。 相反我们希望在后台进行日志记录。 就AOP而言我们的解决方案可以解释为创建一个方面 该方面在某些连接点处横切代码并应用环绕建议以实现所需的功能。 纵横比 让我们看看这些魔术词的含义。 但是首先让我们看一下jcabi-aspects如何使用AspectJ实现它们这是一个简化的示例您可以在MethodLogger.java找到完整的代码 Aspect public class MethodLogger {Around(execution(* *(..)) annotation(Loggable))public Object around(ProceedingJoinPoint point) {long start System.currentTimeMillis();Object result point.proceed();Logger.info(#%s(%s): %s in %[msec]s,MethodSignature.class.cast(point.getSignature()).getMethod().getName(),point.getArgs(),result,System.currentTimeMillis() - start);return result;} } 这是一个方面 里面有一个关于 around() 建议 。 方面用Aspect注释而建议用Around注释。 如上所述这些注释只是.class文件中的标记。 除了为那些对运行时感兴趣的人提供一些元信息外他们什么也不做。 注释Around有一个参数在这种情况下该参数表示在以下情况下建议应适用于方法 其可见性修饰符为* public protected或private 它的名字是名字* 任何名字 它的参数是.. 任何参数 和 它用Loggable注释 如果要截获对带注释的方法的调用则在执行实际方法之前先执行方法around() 。 当要拦截对power()方法的调用时 around()方法将接收ProceedingJoinPoint类的实例并且必须返回一个对象该对象将作为power()方法的结果使用。 为了调用原始方法power() 建议必须调用连接点对象的proceed() 。 我们编译此方面并使其与主文件Foo.class一起在classpath中可用。 到目前为止一切都很好但是我们需要采取最后一步以便将我们的方面付诸实践-我们应该应用我们的建议。 二元方面编织 方面编织是建议应用过程的名称。 Aspect Weaver通过注入对Aspect的调用来修改原始代码。 AspectJ正是这样做的。 我们给它提供了两个二进制Java类Foo.class和MethodLogger.class 它给退三-修改Foo.class Foo$AjcClosure1.class和未修改MethodLogger.class 。 为了了解哪些建议应应用于哪些方法AspectJ weaver使用了.class文件中的注释。 同样它使用反射来浏览类路径上的所有类。 它通过Around注释分析哪些方法满足条件。 当然它找到我们的方法power() 。 因此有两个步骤。 首先我们使用javac编译.java文件并获得两个文件。 然后AspectJ编织/修改它们并创建自己的额外类。 编织后我们的Foo类如下所示 public class Foo {private final MethodLogger logger;Loggablepublic int power(int x, int p) {return this.logger.around(point);}private int power_aroundBody(int x, int p) {return Math.pow(x, p);} } AspectJ weaver将我们的原始功能移至新方法power_aroundBody() 并将所有power()调用重定向到方面类MethodLogger 。 现在我们有四个类一起工作而不是Foo类中的power()方法。 从现在开始这就是每次调用power()幕后发生的事情 方法power()原始功能由图中的绿色小生命线指示。 如您所见方面编织过程将类和方面连接在一起并通过连接点在它们之间转移调用。 无需编织类和方面都只是带有附加注释的已编译Java二进制文件。 jcabi方面 jcabi-aspects是一个JAR库其中包含Loggable注释和MethodLogger方面顺便说一句还有更多方面和注释。 您无需编写自己的方面来记录方法。 只需在类路径中添加一些依赖项然后配置jcabi-maven-plugin进行编织在Maven Central中获取其最新版本 projectdepenenciesdependencydependencygroupIdcom.jcabi/groupIdartifactIdjcabi-aspects/artifactId/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjrt/artifactId/dependency/dependency/depenenciesbuildpluginsplugingroupIdcom.jcabi/groupIdartifactIdjcabi-maven-plugin/artifactIdexecutionsexecutiongoalsgoalajc/goal/goals/execution/executions/plugin/plugins/build /project 由于此编织过程需要大量的配置工作因此我创建了一个具有ajc目标的便捷Maven插件该插件可以完成整个方面的编织工作。 您可以直接使用AspectJ但是我建议您使用jcabi-maven-plugin 。 而已。 现在您可以使用com.jcabi.aspects.Loggable注释您的方法将通过slf4j记录。 如果某些内容无法按照说明进行操作请立即提交Github问题 。 相关文章 您可能还会发现以下有趣的帖子 如何重试异常的Java方法调用 缓存Java方法结果 摆脱Java静态记录器 限制Java方法执行时间 简单的Java SSH客户端 翻译自: https://www.javacodegeeks.com/2014/09/java-method-logging-with-aop-and-annotations.htmlaop 获取注解注释的方法

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

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

相关文章

网站备案号规则成全视频免费观看在线看城南

小型社区和园区停车场通常面临着空间有限、预算有限以及车流量相对较小的挑战。这些特点要求停车场的管理系统既要经济实用,又要能够满足基本的车辆管理需求,如安全性、通行效率和便捷性。针对这些特点,选择合适的停车道闸系统成为提高管理效…

商城网站开发合同沧州网站推广优化

做数据分析和人工智能运算前常常需要大量的数据准备工作,也就是把各种数据源以及各种规格的数据整理成统一的格式。因为情况非常复杂多样,很难有某种可视化工具来完成此项工作,常常需要编程才能实现。 业界有很多免费的脚本语言都适合进行数…

惠州网站制作定制网站后台不显示

牛客题霸 [括号序列] C题解/答案 题目描述 给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([…

微网站界面设计基础品牌策划案例范文

题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar"…

react怎么做pc网站装修设计效果图怎么收费

本文给大家整理了腾讯视频网页下载_腾讯视频怎么下载视频方面的内容。腾讯视频独播剧质量还是可以的,比较给力的是腾讯视频大量买入了老剧的版权,不乏一些比较经典的港剧,还把这些老剧修复了。腾讯视频播放器是一款支持多种音视频格式的主流播…

化妆品网站设计思路张家港网站设计建设

在日常服务器日志查看中常用到的命令有grep、tail等,有时想查看详细日志,用到vi命令,记录下来,方便查看。 操作文件:test.properites 一、查看与编辑 查看命令:vi 文件名 编辑命令:按键 i&…

南通网站建设培训c2c模式发展趋势

都说女人是男人的肋骨蜕变而来,是男人的心肝.可那一朵一朵微微卷起的发梢,点朱唇,纤细白皙的手指,踩着男人心底高跟鞋的我并不是他美丽的天使,往事在耳边环绕,现在的他人在那里,我不闻不问&…

河北网站备案手机号码短信核验做店招的网站

1,指针的基本概念 指针的作用:可以通过指针间接访问内存 内存的编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址 上图中的p就是a变量的指针,也可以记作*a 2,指针变量的定义和使用 指针变量定…

哪些网站可以做edge主页服装高级定制品牌

今年5月底的時候FeedBurner才被Google以1億美元買下,在Google大金主的支援下FeedBurner現在免費讓所有的FeedBurner用戶昇級成以前要付費的PRO高級用戶。在FeedBurner後台My Account中可以看到”FeedBurner Stats PRO • Free for the life of your feed”&#xff…

哪家网站搜素引擎优化

【小宅按】我们说url的动态、静态、伪静态三种形式,其实从严格分类上来说,伪静态也是动态的一种,只是表现形式为静态。参考:动态url、静态url和伪静态url的详细讲解 - 好文分享动态URl动态页面的特征1、以ASP、PHP、JSP、ASP.NET …

网站虚拟主持海淀网站建设wzjs51

目录 前言1.char和varchar的区别2.数据库的三大范式3.你了解sql的执行顺序吗?4.索引是什么5.索引的优点和缺点6.索引的类型7.索引怎么设计(优化)8.怎么避免索引失效(也属于sql优化的一种)9.索引的数据类型10.索引为什么使用树结构11.二叉查找树、B树、B树12.为什么使…

什么是最经典最常用的网站推广方式wordpress文件无法创建目录下

1、什么是线程池 java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服…

网站统计模板江苏苏州

责任链模式概述 责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许对象或对象集合以链式的方式组织在一起,以处理请求在责任链中,每个对象都包含对下一个对象的引用,并且都有机会处理…

滨州建网站公司自建网站平台的页面功能

今天,在配置kettle同步mysql数据的时候,碰到了kettle把空字符串当成null的情况。 解决步骤: 找到配置文件:C:\Users\用户名.kettle目录中找到kettle.properties添加配置:KETTLE_EMPTY_STRING_DIFFERS_FROM_NULLY重启k…

那个视频网站好手机之家报价大全

知行EDI系统主要是用来实现贸易双方的数据交换的过程,这个过程中,贸易双方往往需要根据国际通用的消息格式收发信息,我们称符合国际规范的消息文件为EDI报文,然而不同的公司会结合ERP的接口情况选择不同的集成方式,例如…

手机网站信任从哪里设置企业营销策划及推广

jooq sqljOOQ是“数据库优先”类型的安全SQL API,使您可以直观地用Java编写SQL,就像Java编译器本身支持SQL语言一样。 所有数据库模式,表,列,过程和其他对象均作为Java对象提供,可以直接在jOOQ SQL API中使…

网站建设首选建站系统自建网站需要备案吗

项目需求 职工管理系统可以用来管理公司内所有员工的信息 公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责 普通员工职责:完成经理交给的任务 经理职责:完成老…

admin5站长网五个h5制作网站

文章目录题意思路传送门 题意 给你nnn个点,需要给每个点定向,方向可以向右或者向左,定向之后点会朝选择的方向移动,要求满足mmm个条件,两种不同的条件如下: i,ji,ji,j两个位置定向之后移动不会相遇。i,ji…

做网站设计的公司名字哈尔滨市营商环境建设监督局网站

编写软件测试文档是一个关键步骤,它可以帮助测试人员记录测试过程、结果和发现的问题,同时为开发团队提供反馈和建议。 以下是一些编写软件测试文档的建议: 测试计划 在测试计划中,描述测试的目标、范围、方法、时间表和资源需求。…

网站建设怎么收费呀河西网站建设制作

【 组长博客链接】 031602428 苏路明 【计划安排】 阶段主要任务时间任务内容1项目选题09.22 - 10.10确定选题内容,收集用户需求,明确定位,竞品分析,选题报告2需求分析10.11 - 11.4梳理需求,输出思维导图,原…