我应该通过 SessionAware 还是 ActionContext 获取会话?

5 struts2 actioncontext

在阅读了通过获取会话映射ActionContext.getContext().getSession()和通过注入它之间的区别之后, SessionAware我想知道哪种方法是首选方法,为什么?

API 推荐使用SessionAware,我在网上读到使用SessionAware使应用程序更容易测试——测试是唯​​一的问题吗?

有人可以详细说明这个主题或指出解释这一点的参考资料吗?

Ume*_*thi 2

我已经在您之前的问题中回答了相同的问题。您可以使用任何一种方式,甚至可以通过更多方式访问会话。

单程

Map attibutes = ActionContext.getContext().getSession();
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用它,并且您的操作类直接绑定到ActionContextStruts2 特定的方式。Struts2 的主要目标之一是将 Action 类与底层 HTTP 上下文以及其他直接依赖项解耦。此外,为普通 POJO 编写测试用例比其他方法更容易且更好。

通过实现SessionAware接口,您向 Struts2 表明您希望将会话作为一个简单的映射对象,这不仅使代码更加解耦,而且易于维护和测试。

我希望其他人能在这方面提出更多好的观点