依赖注入中的作用域与对象生命周期深度解析
1. 作用域的更多用例
1.1 避免作用域扩大注入
在依赖注入中,作用域扩大注入可能会带来诸多问题,如内存泄漏。以下是一个示例代码:
@Singleton
public class GoodServlet extends HttpServlet {
public final Provider<WebPage> page;
public void service(HttpServletRequest request,
HttpServletResponse response) {
page.get().handle(request, response);
}
}
上述代码中, GoodServlet 表现良好,允许 WebPage 实例被垃圾回收器回收。而作用域扩大注入包含许多类似的危险,应尽可能避免,并尝试使用更简单的设计,例如使用最窄的作用域,或者选择 Provider 和 Adapter 设计模式。
1.2 利用作用域的强大功能
虽然许多依赖注入(DI)库开箱即用地提供了作用域,一些 Web 框架还通过高级作用域(如闪存和会话)进行了补充,但仍有很大的创新空间。以下是一些利用作用域功能的思路:
1.2.1 缓存作用域
创建成本高昂的对象(或从存储中检索成本高昂的数据
超级会员免费看
订阅专栏 解锁全文
1335

被折叠的 条评论
为什么被折叠?



