依赖注入中的作用域与对象生命周期深度解析
1. 作用域的使用案例
在依赖注入里,作用域是一个关键特性。它能把好莱坞原则应用到对象状态上,能有效减少代码里的样板代码和基础设施逻辑,让代码更易读、易测试,还能降低对象间的依赖,简化对象图。
1.1 良好的作用域使用示例
以下是一个 GoodServlet 类的代码示例:
@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 实例被垃圾回收器回收,避免了作用域扩大注入带来的问题。
1.2 作用域扩大注入的风险
作用域扩大注入存在诸多风险,比如会导致内存泄漏。像把无作用域的对象绑定到单例对象上,就会改变无作用域对象的生命周期,使其和单例对象一样长。为避免这类问题,设计架构时应尽量减少作用域扩大注入的情况。可采用以下方法:
- 把对象图里的所有键绑定到最窄的作用
超级会员免费看
订阅专栏 解锁全文
759

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



