我认为这是Spring AOP的局限性
@Aspect
public class BusinessProfiler {
private static Log log = LogFactory.getLog(BusinessProfiler.class);
@Around("execution(* *(..)) && @annotation(TimeLog)")
public Object profile(ProceedingJoinPoint point) throws Throwable {
long start = System.currentTimeMillis();
Object result = point.proceed();
String format =
String.format("%s#%s: took [%s msec]", point.getTarget().getClass().getSimpleName(),
MethodSignature.class.cast(point.getSignature()).getMethod().getName(),
System.currentTimeMillis() - start);
log.info(format);
return result;
}
}
除了Spring AOP还有别的选择吗
如果您考虑一下Spring处理AOP注释的方式,就会明白:
Spring接受您的类,并用添加的AOP注释动态生成的额外代码将其包装在代理中。因此,只有通过代理调用的代码(即从类外部调用的代码)才会被包括在内。
例
@Service
public class Foo {
public void doSomething() {
doSomethingInternal();
}
public void doSomethingInternal() {
}
}
@Service
public class Bar {
@Autowired
private Foo foo;
public void execute() {
foo.doSomething();
}
}
我需要捕获私有的内部调用方法。 然而,却始终得不到建议。我该怎么解决呢? 我也尝试过这个切入点: 和建议:
问题内容: 如果我有一个包私有的Java类(用“ class”声明,而不是“ public class”),那么将内部方法声明为public或protected或package- private确实没有区别,对吗?那么我应该使用哪个,或者什么时候该使用呢?我有点困惑。 问题答案: 如果我有一个包私有的Java类(用“ class”声明,而不是“ public class”),那么将内部方法声明为p
我在使用reflections api的公共类中的私有类中使用私有方法时遇到问题。下面是一个简化的代码示例: 同样,我希望能够实例化一个类对象,然后从私有类调用。我一直试图通过反射来做到这一点,但我似乎无法超过1级。此外,内部类可能有也可能没有大多数代码似乎使用的构造函数。上面的代码只是框架。 我当前的代码: 我查找了各种方法来获取内部类或私有方法,但找不到在不使用构造函数的情况下将外部对象获取到
在 Python 的面向对象编程中,私有属性是只能在类的实例方法中访问的属性,不允许在外界访问私有属性。 1. 私有属性的定义 1.1 定义 在属性名称前加上前缀 __,表示该属性为私有属性,示例代码如下: class Object: def method(self): self.__private_attribute = 123 在第 3 行,创建一个私有属性 __pr
问题内容: 如何对具有内部私有方法,字段或嵌套类的类进行单元测试(使用xUnit)?还是通过内部链接(static在C / C ++中)或在私有(匿名)名称空间中使其私有化的函数? 仅仅为了能够运行测试而更改方法或函数的访问修饰符似乎很糟糕。 问题答案: 更新: 大约十年后,测试私有方法或任何无法访问的成员的最佳方法可能是来自Manifold框架。 这样,您的代码将保持类型安全和可读性。没有设计折
我创建了一个方法本地内部类并与抽象类结合。代码工作正常,但我不明白IntelliJ中关于我不能在内部类中设置方法的错误弹出窗口,该方法从抽象内部类扩展到私有。 我必须从“Private InnerClassSubclass”更改为“Public InnerClassSubclass”,如果我不这样做,错误如下: “InnerClassSubclass”中的“innerMethod()”与“Inne