代码之家  ›  专栏  ›  技术社区  ›  Szymon Lipiński

如何在使用注释的当前函数之前运行函数?

  •  1
  • Szymon Lipiński  · 技术社区  · 15 年前

    在当前调用函数之前,是否可以使用注释来运行函数,如下所示:

    public void doSomethingEarlier() {
    }
    
    @DoSomethingEarlier
    public void doSomething() {
    }
    

    所以我想调用dosomethin()函数,在执行这个函数之前,我想自动运行dosomethingearier()函数。

    4 回复  |  直到 15 年前
        1
  •  2
  •   Bozho    15 年前

    您有很多方法,但实现起来有点困难:

    • 使用 Proxy 在这里,您可以解析目标方法上的注释并调用具有相同名称的方法
    • 使用 AOP

    第一种方法更直接。最好让注释看起来像:

    @BeforeMethod("methodName")
    

    一般来说,这就是aop在低层上的工作方式。

        2
  •  0
  •   bmargulies    15 年前

    请参阅面向spring方面的编程。

    Java不会为你做到这一点。其他人:您或某个库:必须查看注释并调整调用过程。

        3
  •  0
  •   luis.espinal    15 年前

    是的,您可以使用注释。你必须自己创造 @DoSomethingEarlier 注释(带有运行时保留),您必须编写自己的注释处理器处理器代码。这不是一个简单的提议,您可能希望寻找其他替代方案,如aop或动态代理(这也可能不容易)。

        4
  •  0
  •   Chris Nava    15 年前

    这更容易……

    public void doSomethingEarlier() {
    }
    
    public void doSomething() {
        doSomethingEarlier();
    }