我有一个AspectJ编织注释,它适用于公共方法,但私有方法被忽略了。此方法的目的是简单地记录运行函数所用的时间。
@Aspect
@Slf4j
public class TimedLogAspect {
@Pointcut("@annotation(timedLogVar)")
public void annotationPointCutDefinition(TimedLog timedLogVar) {}
@Pointcut("execution(* *(..))")
public void atExecution() {}
@Around(value = "annotationPointCutDefinition(timedLogVar) && atExecution()", argNames = "joinPoint,timedLogVar")
public Object around(ProceedingJoinPoint joinPoint, TimedLog timedLogVar) throws Throwable {
Stopwatch stopwatch = Stopwatch.createStarted();
Object returnValue = joinPoint.proceed();
stopwatch.stop();
MessageBuilder messageBuilder = new MessageBuilder(joinPoint.toShortString(), stopwatch.elapsed(TimeUnit.MILLISECONDS))
.attachMessage(timedLogVar.message())
.attachMethodArgs(timedLogVar.shouldAttachMethodArgs(), Stream.of(joinPoint.getArgs()).collect(Collectors.toList()))
.attachReturnValue(timedLogVar.shouldAttachReturnValue(), returnValue);
log.info(messageBuilder.build(), messageBuilder.getArgs().toArray());
return returnValue;
}
}
这是实际的接口:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TimedLog {
boolean shouldAttachMethodArgs() default false;
boolean shouldAttachReturnValue() default false;
String message() default "";
}
我已经看到了很多答案,在执行
部分的第一个*
之前添加Private
,我看到了注释不支持的特权
,并且我使用的是没有SpringAOP的AeyJ。
有什么想法吗?
答案很简单:使用原生AeyJ语法。你自己提到的。你甚至说你使用完整的AeyJ,而不是Spring AOP。所以切换应该不是问题。
你有很多优点:
基于注释的语法IMO非常难阅读,所有内容都在注释参数内的单个字符串中。我只有在没有其他选择或在这里回答有关它的问题时才使用它。
我有以下场景: 我想在测试中覆盖公共方法methodA()的catch块。我不想更改私有方法的可见性。是否有任何方法可以使用EasyMock实现私有方法的部分模拟?或者有没有办法改变Junit类中私有方法的行为,以便在不使用mocking的情况下抛出异常? 提前谢谢。
问题内容: 将私有方法定型是否有好处?这样会提高性能吗? 我认为“私有最终”没有多大意义,因为私有方法不能被覆盖。因此,方法查找应该像使用final时一样高效。 (如果可能)将私有助手方法设为静态会更好吗? 最好使用什么? 问题答案: 添加方法不会提高Sun HotSpot的性能。HotSpot会在可能添加的地方注意到该方法永远不会被覆盖,因此请一视同仁。 在Java中,方法是非虚拟的。您不能覆盖
本文向大家介绍centos7搭建docker私人仓库的方法(kubernetes),包括了centos7搭建docker私人仓库的方法(kubernetes)的使用技巧和注意事项,需要的朋友参考一下 我们平时镜像都是习惯于放在公共仓库的,比如Dockerhub, Daocloud。但在企业里,我们经常会需要搭建公司自己的镜像仓库。 这篇文章讲解如何用docker提供的registry镜像来搭建自己
在github文档中找不到任何东西,在这里也找不到。但是我想知道是否可以有一个用于名为的私有存储库,该存储库可以访问,只有一个人可以访问存储库本身。 我记得曾经读过一些关于github页面总是公开的东西,但似乎再也找不到了。
为什么不能正确编译?为了测试它,我添加了main方法行,但是我得到了很多错误,说私有构造函数和公共构造函数都是表达式的非法开头,还说它们不是语句。它还要求我在我认为不必要的地方添加分号,因为分号是方法的开始。我不希望任何人为我重新输入代码,但至少有人能给我指出正确的方向,告诉我哪里出了问题吗?