java - Spring - 依赖注入和@Autowire 之间的关系
问题描述
今天在一次采访中,面试官问我,“告诉我……什么是依赖注入,我们为什么要使用它?” . 对此,我回答了 DI 和 IoC 的传统定义,以及 DI 如何通过不使用 new 创建对象来帮助使代码松散耦合,并解释了在运行时使用拼写检查程序提供对象作为方法参数。
public class TextEditor {
private IocSpellChecker checker;
public TextEditor(IocSpellChecker checker) {
this.checker = checker;
}
}
他似乎对我的书呆子回答不太满意,并问我一个依赖注入应该消除的实时问题,他还暗示它与 bean 实例化和内存优化有关。他还提到它与@Autowire。
经过数小时的谷歌搜索,我对此一无所知。问题的答案应该是什么?这些都是如何相关的?
解决方案
关于内存优化,我可以想象他的意思是 DI 有助于获取现有对象实例以供重用,而不是因为懒惰传递现有对象而创建新实例。(例如 Spring-)上下文管理您的 bean 并关心分配/注入。在此之前,您必须使用单例或将所有共享对象保留为静态或单例类中的成员,并且该类已从任何地方引用。
推荐阅读
- css - 如果浏览器不支持某种文件类型,有没有办法在 CSS 中创建后备图像?
- pandas - 在熊猫数据框中按字符值保留分组
- git - 关于 Git 工作分支是从 dev 合并的,一些文件/代码在合并后被删除/擦除
- html - 除非我刷新页面,否则字体无法正确加载
- reactjs - 试图弄清楚将其从组件转换为 ReactJS 中的函数,但我被卡住了
- typescript - 通过打字稿声明全局类型是行不通的
- windows - 为什么 OSX 和 Windows 导入我的 .pfx 文件的方式不同?
- css - 浏览器更改 H 标签中的字体粗细
- python - 如何将两个字典合并为一个
- sql - 在多对多 SQL 表上精确匹配的 Where 语句