在阅读了通过获取会话映射ActionContext.getContext().getSession()和通过注入它之间的区别之后,
SessionAware我想知道哪种方法是首选方法,为什么?
API 推荐使用SessionAware,我在网上读到使用SessionAware使应用程序更容易测试——测试是唯一的问题吗?
有人可以详细说明这个主题或指出解释这一点的参考资料吗?
我已经在您之前的问题中回答了相同的问题。您可以使用任何一种方式,甚至可以通过更多方式访问会话。
单程
Map attibutes = ActionContext.getContext().getSession();
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用它,并且您的操作类直接绑定到ActionContextStruts2 特定的方式。Struts2 的主要目标之一是将 Action 类与底层 HTTP 上下文以及其他直接依赖项解耦。此外,为普通 POJO 编写测试用例比其他方法更容易且更好。
通过实现SessionAware接口,您向 Struts2 表明您希望将会话作为一个简单的映射对象,这不仅使代码更加解耦,而且易于维护和测试。
我希望其他人能在这方面提出更多好的观点