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

Spring AutowiredNotationBeanPostProcessor仅使用无参数构造函数

危文乐
2023-03-14

下面是引用的Spring留档的AutoowiredAnnotationBeanPostProc处理器,

任何给定bean类中只有一个构造函数(最大值)可以携带此注释,其中“必需”参数设置为true,指示构造函数在用作Spring bean时自动连接。如果多个非必需的构造函数携带注释,它们将被视为自动连接的候选。将选择具有最多依赖项的构造函数,这些依赖项可以通过匹配Spring容器中的bean来满足。如果没有候选人可以满足,那么默认构造函数(如果存在)将被使用。带注释的构造函数不必是公共的。

因为我是Spring的新手,所以我只知道当我们使用@autowmed时,它会调用无参数构造函数来注入依赖关系。

这个required如何与构造函数一起使用?这个引号是什么意思?

共有1个答案

何高歌
2023-03-14

使用Spring自动连接有两种方法:基于字段的和基于构造函数的。我认为到目前为止,您只熟悉现场自动布线。此引号指的是将@Autowired注释放在构造函数上(或者也放在构造函数上)。这意味着Spring将尝试自动关联构造函数参数。因此,您不再需要使用无参数构造函数。

如果您计划使您的类不可变,那么基于构造函数的自动连接是必不可少的,也就是说,字段声明为最终的,必须自动连接。

在参考文档中可以找到一个简单的示例(锚之后的第三个代码示例)。

稍微复杂一点的。

另一个来自参考文档(锚之后的第二个代码示例)。

 类似资料:
  • 我正在浏览hibernate留档,文档说hibernate需要为我们所有的持久类提供一个no-arg构造函数: 无参数构造函数是所有持久类的要求;Hibernate必须使用Java反射为您创建对象。构造器可以是私有的,但是在没有字节码插装的情况下,运行时代理生成和有效的数据检索需要包或公共可见性。 但是当我通过创建一个没有任何无参数构造函数的POJO类并放置一个接受参数的构造函数来创建一个示例程序

  • 问题内容: 我的课如下: 在构造函数中的逻辑和是我试图嘲弄的事情。我想要任何调用:返回一个虚拟字符串。 我试过了: 但这似乎不起作用。仍在执行构造函数逻辑,而不是获取的模拟对象。 问题答案: 您发布的代码适用于最新版本的Mockito和Powermockito。也许您还没有准备A?试试这个: A.java MockA.java 两项测试均应通过Mockito 1.9.0,powermockito

  • 实际上,我不明白无参数构造函数和默认构造函数的区别是什么。 在创建名为cFrame的Test对象时,是否调用此类的默认构造函数?

  • 在经历冬眠3时。x文档我知道我们也可以为具有私有可见性的POJO声明一个无arg构造函数,但文档说它有限制: 无参数构造函数是所有持久类的要求;Hibernate必须使用Java反射为您创建对象。构造器可以是私有的,但是在没有字节码插装的情况下,运行时代理生成和有效的数据检索需要包或公共可见性。 我不熟悉Hibernate,我试图了解何时使用运行时代理,何时使用字节码,以及这在Hibernate中

  • 所以我正在我的Java项目(Google Guice)中实现一个依赖注入框架,一切都很好,我喜欢它,但是有一个小问题;我想为我的主项目的类创建一个静态实例(实例化依赖项等)。但是我不知道使用Guice实例化它的任何方法,我不能手动实例化它,因为我在它的构造函数中使用DI(我在构造函数中有对象),这意味着我不能访问实例化该类所需的类的非静态变量。我试着使用一个提供者,但是我真的不明白在哪里绑定它,因

  • 考虑下面给出的代码: 我正在尝试编写一个单元测试用例: < li >调用< code >对象b。B()必须被嘲笑 < li >必须模拟对构造函数的调用 这就是我使用Mockito和Powermockito所做的: 第一个模拟成功工作,但第二个模拟使用 失败,并出现以下错误: org.powermock.reflect.exceptions.ConstructorNotFoundException: