我有一个 X 类,其中包含 do 方法。
我还有另外两个类 A 和 B,其中创建了 X 的对象。
有什么方法可以找出 x 的 do() 是否被 A 或 B 调用。
我不想在 do() 方法中使用参数。来自呼叫跟踪或其他什么?
我正在使用struts2,Spring。那么框架有什么帮助吗???
我想在 do() 中根据它是从 A 调用还是从 B 调用来实现一些逻辑。
好吧,是的,您可以使用 s 检索堆栈Thread.getCurrentThread().getStackTrace()
并读取StackTraceElement
sgetClassName()
并与 A 或 B 匹配。(我试图想象一个场景,这比 param 更可取并且出现空白,但是 YMMV ......)
可能,但是如果您必须这样做,则可能值得为单独的功能使用两种方法,这两种方法调用共享部分的单个方法。
Ascall(...)
specialStuffA
commonCall(...)
Bscall(...)
specialStuffB
commonCall(...)
commonCall(...)
commonStuffAB
我知道这看起来很连贯,但现有的逻辑可以快速发布到推特上来解决这个问题。
情景是,
我有两个动作 A 和 B 调用服务 X。
X 被 Spring AOP 拦截以添加过滤器并传递给 DAO。
如果 A 调用 X 则显示所有数据,即不应用过滤器,如果 B 调用 X 则仅显示登录用户的数据。
X 已经因为添加一些其他过滤器而被拦截,因此添加一个过滤器会很容易。此过滤器也集中存在,因此所有 A 或 B 调用 X,因此 X 将相应地完成工作。
我在这里找到了更好的方法,在 X 中有一个实例变量,而 A 的 X 实例将具有值“a”等等。
所以现在我将能够区分 A 对 X 的调用和 B 对 X 的调用。
是否有意义?