我参与了一个jsp / servlet应用程序。应用程序存储会话或请求中所需的对象。但是,可以将相同的对象注入到多个位置的会话或请求中。换句话说,而不是写
HomeBean homeBean = (HomeBean) request.getSession(false).getAttribute("homeBean");
我会写
HomeBean homeBean = BeanStore.getHomeBean();
我是否过度思考或过度设计?
答案 0 :(得分:1)
在某些框架中,例如spring或cdi,您可以将会话或甚至某些会话属性直接注入您的业务组件,例如:
@Inject
private HomeBean homeBean;
而不是使用HTTP会话访问代码污染您的代码,只需获取对象一次并在需要的地方传递它。它将使阅读和测试更容易。
请注意,如果您确实不想直接传递BeanStore.getHomeBean()
,那么HttpSession
很难正确编写。 Servlet过滤器和ThreadLocal
,我来了!更不用说我发现这种静态的“工厂”非常难看。
旁注,在:
request.getSession(false).getAttribute("homeBean")
request.getSession(false)
通常会返回null
,让您感到讨厌NullPointerException
。在这种情况下,首选true
或根本没有参数。