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

构造器自动布线比普通自动布线或属性自动布线有什么优势?

窦国源
2023-03-14

与属性自动装配相比,构造函数自动装配有什么特殊的优势吗……或者普通的优势。?优于迫使团队在Spring启动中使用构造函数自动装配……它有什么特殊的优势吗?两种类型的自动装配的优缺点

共有2个答案

岑畅
2023-03-14

构造函数连接也有助于编写无错误代码。如果您通过构造函数自动连接来连接依赖项,那么您将能够使用模拟框架轻松地模拟它们,并通过构造函数注入它们。

具体来说,Mockito在模拟依赖项时会静默失败,如果您没有使用构造函数自动布线,则很难调试代码在何处中断。

如果您按照 TDD 编写大型企业应用程序,构造函数自动布线会很有帮助。

朱令
2023-03-14

构造函数自动装配的优点在于,您可以使有线字段最终化(如果您的bean将从多个线程调用,则特别有用,因为线程安全性更容易通过最终化进行分析)。您可以确保bean始终以有效的方式构造(尽管您可以始终实现初始化Bean,并使用postProperty tiesSet方法来实现相同的功能,如果您在属性中连接)。

如果您有很多字段,则连接属性会更好,因为它可以避免构造函数中包含非常多的参数,并且如果您使用的是xml,则按名称进行连接不太容易混淆变量(考虑一个具有许多参数的构造函数,所有参数都是一种类型 - 很容易连接错误的变量)。布线属性还使具有可选属性变得更加容易 - 使用构造函数布线的可选属性将需要多个构造函数,这很快就会变得复杂。

总之,这两种方法各有优缺点——我们通常使用属性布线,除非有特殊原因我们应该使用构造函数布线。

 类似资料:
  • 我使用spring已经有一段时间了,但是今天早上我遇到了一些意想不到的行为。由于我自己无法决定这是一个理想的功能还是一个bug,所以我在这里展示它,希望我能得到一些关于为什么会发生这种情况的好解释。 简而言之,我在一个应用程序上下文中定义了多个bean,并且我使用utils创建了两个map bean:map name space,只将我的bean的一部分添加到这些map中。这两个地图有完全相同的条

  • 我有一个组件如下: 这是另一个类,我在哪里自动连接上面的类: 在上面的自动布线中,我需要使用参数化构造函数。如何传递构造函数参数?

  • 问题内容: 我对的反转如何在Spring。 假设我有一个称为服务的类,它实现了接口。 怎么会这样? 而在我,我怎么会在这个服务的? 我会做以下事情吗? 问题答案: 首先,也是最重要的一点-所有Spring Bean都受到管理-它们“实时”存在于称为“应用程序上下文”的容器中。 其次,每个应用程序都有一个指向该上下文的入口。Web应用程序具有Servlet,JSF使用el-resolver等。此外,

  • 我有个小问题。这可能微不足道,但我以前从未面对过。 我有一个通用接口和它的通用实现。我想自动连线,但发生了错误。以下是详细情况: 接口 实施 自动布线尝试 错误 我想让它尽可能简单。我已经检查了网络,但是我只发现了在配置中定义我的确切bean。如果可能的话,我更喜欢避免它。

  • 在使用Spring AOP之前,我有一个这样的工作代码: 在哪里 在哪里 我的城市财产编辑自动接线工作正常。但是在为所有方法添加Spring AOP切入点之后: 城市地产编辑器的自动连接崩溃。事实上,bean不再属于CityProperty tyEditor类,而是简单地属性编辑器: 因此,我不得不将类从CityPropertyEditor更改为PropertyEditor,作为一种解决方法。有趣

  • 你可以在“精彩活动-新建活动”挑选兑吧预设的活动 只需要点击创建活动,根据弹窗提示就可以配置活动的展示。点击新窗口预览就可以查看这个活动的奖品及规则。 以圆形大转盘为例,操作如何添加奖品; 点击创建活动,进入活动规则,规则中的红色*号是必填选项,开启直充防刷之后直充类奖项无法使用多个用户充值至一个充值账户 活动模式分积分商城活动和独立活动工具两种类型,两者区别是:独立活动工具还没有积分体系,可以单