当前位置: 首页 > 知识库问答 >
问题:

@Autowired表示不建议现场注射[重复]

万俟英锐
2023-03-14

有谁能告诉我为什么@autowired表示不建议使用字段注入,而TextWriter对象“text”也表示无法自动连接,因为TextWriter类型的bean不止一个。我的密码。

共有2个答案

吕和风
2023-03-14

我假设Spring不把TextWriter类看作一个bean。可能TextWriter在另一个软件包中。例如,在“模型”包中。如果您使用Spring Boot,那么这将帮助您:

@SpringBootApplication(scanBasePackages={"com.programwithwaqas.restservice.models"})

我建议您阅读@SpringBootApplication注释。注意注释@ComponentScan。

这是以防您不使用Spring Boot

@ComponentScan(basePackages={"com.programwithwaqas.restservice.models"})
解河
2023-03-14

有谁能告诉我为什么@autowlie说不推荐野外注射?

出于设计原因。将bean直接注入字段会使依赖关系“隐藏”,并鼓励糟糕的设计:

  • 类API(public/protected member)在它们存在时没有指定它们
  • 没有反射或Spring容器(对我来说最重要的部分)就无法进行单元测试。
  • 您可以通过声明潜在的多个注入字段来完成。这可能会使你的类与其他类有很强的耦合,而你“真的”没有意识到这一点

一般来说,如果字段少,构造函数注入应该受到青睐(自Spring 4以来,不需要用@Autow哎注释构造函数),否则setter应该是这种方式。
这两种方式都没有上面提到的所有缺点。

 类似资料:
  • 我读到(例如这里)如果我使用字段依赖注入,那么我就不能创建不可变的对象,但我不明白字段依赖注入是如何打破不可变的,我可以做下面的事情,可以创建不可变的,不是吗? 更新:请注意,我的问题是关于字段注入打破不变性的,所以我想知道我的上述代码片段(自从我最初的问题以来发生了变化,感谢@Andy和其他人纠正了它)是如何打破不变性的,我想不是,所以我认为这个答案是错误的,关于场注入的不变性。

  • 如果我有用@component注释标记的bean。而是不同文件夹中的两个bean。一个在com.mycompany.core.bean1中,另一个在com.mycompany.dao.bean2中。当我试图在Bean2中自动连接bean1时,就像: 我需要在bean2中导入带有bean1的包吗?还是它会自己扫描它? UPD:我知道同名的问题。但问题是完全不同的。所以请注意我的问题,如果你现在它,不

  • 我有几个测试如下: 对于每个测试,我应该添加相同的表格示例。 有没有办法提取这个表,以便在所有测试中使用同一个表?

  • 建议列表显示所有匹配优化建议规则的资源列表,用户可根据建议对资源进行处理。 建议列表显示所有匹配优化建议规则的资源列表。建议列表中的资源都有一定程度的浪费,从节省成本的角度考虑,需要用户对匹配规则的资源处理等。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “优化建议/安全检查/建议列表” 菜单项,进入建议列表页面。 处理 该功能用于按照优化建议对匹配规则扫描出来的资源进行处理。

  • 建议列表显示所有匹配优化建议规则的资源列表,用户可根据建议对资源进行处理。 建议列表显示所有匹配优化建议规则的资源列表。建议列表中的资源都有一定程度的浪费,从节省成本的角度考虑,需要用户对匹配规则的资源处理等。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “优化建议/成本优化/建议列表” 菜单项,进入建议列表页面。 处理 该功能用于按照优化建议对匹配规则扫描出来的资源进行处理。

  • 和我的场景代码: 我读过这样的帖子: 为什么我的背景图像不是用FXML显示的