逻辑基于谁是被调用者

时间:2012-07-04 02:30:35

标签: java spring methods struts2

我有一个X类,它说的是do方法。

我有另外两个班A& B中创建了X的对象。

有什么方法可以判断x的do()是否被A或B调用。

我不想在do()方法中使用参数。来自跟踪或其他什么东西?

我正在使用struts2,Spring。那么框架的任何帮助???

我想在do()中实现一些逻辑,基于它是从A还是B调用。

3 个答案:

答案 0 :(得分:1)

嗯,是的,您可以使用Thread.getCurrentThread().getStackTrace()检索堆栈并阅读StackTraceElement s getClassName()并与A或B匹配。(我试图想象一下会比一个参数更好,而且是空白的,但YMMV ......)

答案 1 :(得分:1)

可能,但是如果你必须这样做,那么为单独的功能提供两种方法可能是值得的,这些方法调用共享部分的单个方法。

Ascall(...)
  specialStuffA
  commonCall(...)

Bscall(...)
  specialStuffB
  commonCall(...)

commonCall(...)
  commonStuffAB 

答案 2 :(得分:0)

我知道这看起来很有线,但现有的逻辑可以快速发送推文以便为此工作。

情景是,

我有两个动作A& B调用服务X.

X被Spring AOP拦截,以添加过滤器并传递给DAO。

如果A调用X然后显示所有数据,即不应用过滤器,如果B调用X则显示仅登录用户的数据。

X已被拦截以添加其他一些过滤器,因此可以轻松添加一个过滤器。此过滤器也集中存在,因此所有A或B的调用X以及因此X将相应地进行工作。

我在这里找到了更好的方法,在X中有一个实例变量,A的X实例将有值'a',依此类推。

所以现在我将能够区分A的X调用和B的X调用。

有意义吗?