Java - 动态地使事务方法被忽略

时间:2011-02-28 20:16:44

标签: java methods dynamic ignore

我正在编写一个与SOAP API对话的程序。我正在编写的程序涉及金钱,能够在运行时确定是有用的(我的理由是,如果我可以在运行时处理它,我可以轻松地将配置文件放在一起以便在编译后使用)我是否想要执行处理金钱的方法。

我有一个make请求方法,所有API调用都经过,理想情况下我想要这样的东西:

  ...
   @DealsWithMoney
   public void myMethodWhichMakesAnAPIRequest() {
      ...
      this.makeRequest(...); 
   }

   public void makeRequest(...) {
      if (!this.allowMoneyHandlingMethods) {
          //Psuedo code
          if (method_that_called_this_method has @DealsWithMoney annotation) {
              //ignore
          }
      }
   }

我从来没有写过自定义注释,所以我很感激这里有一些指导。另外,如果你能提出一个更好的方法来处理这个问题吗?

干杯,

皮特

1 个答案:

答案 0 :(得分:0)

public @interface DealsWithMoney {}

将为您定义注释。

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()

获取堆栈跟踪,您应该从该跟踪中获取调用者的MethodMember引用并执行

Annotation[] annotations = method.getDeclaredAnnotations();

并检查您要查找的注释是否在返回的列表中。