0

我参与了一个 jsp/servlet 应用程序。应用程序存储会话或请求中所需的对象。但是,可以将同一对象注入到多个位置的会话或请求中。换句话说,而不是写

HomeBean homeBean = (HomeBean) request.getSession(false).getAttribute("homeBean");

我会写

HomeBean homeBean = BeanStore.getHomeBean();

我是过度思考还是过度设计?

4

1 回答 1

1

等一些框架中,您可以将会话甚至某些会话属性直接注入您的业务组件,例如:

@Inject
private HomeBean homeBean;

此外,无需使用 HTTP 会话访问代码污染您的代码,只需获取一次对象并在需要的地方传递它。它将使阅读和测试更容易。

请注意,BeanStore.getHomeBean()如果您真的不想HttpSession直接通过,您真的很难正确编写。Servlet 过滤器ThreadLocal,我来了!更不用说我觉得这样的静态“工厂”非常难看。


旁注,在:

request.getSession(false).getAttribute("homeBean")

request.getSession(false)会经常回来null,留给你讨厌NullPointerException。在这种情况下,首选true或根本没有参数。

于 2012-07-17T21:31:13.320 回答