以下是来自AutowiredAnnotationBeanPostProcessor的弹簧文档的引用,
任何给定bean类只有一个构造函数(最大值)可以携带它 将'required'参数设置为true的注释,指示 构造函数在用作Spring bean时自动装配。如果多个 非必需的构造函数带有注释,它们将是 被视为自动装配的候选人。构造函数与 匹配可以满足最大数量的依赖关系 将选择Spring容器中的bean。如果没有 候选人可以满意,然后是默认构造函数(如果存在) 将会被使用。带注释的构造函数不必是公共的。
由于我是Spring的新手,我只知道当我们使用@Autowired
时,它会调用无参数构造函数来注入依赖。
这个required
如何与构造函数一起使用,这个引用意味着什么?
答案 0 :(得分:4)
使用Spring自动装配东西有两种方法:基于字段和基于构造函数。我认为到目前为止你只熟悉现场自动装配。该引用是指在构造函数上(或者也)使用@Autowired
注释。这意味着Spring将尝试自动装配构造函数参数。因此,您根本不需要使用无参数构造函数。
如果您计划让您的类不可变,那么基于构造函数的自动装配是必不可少的,即将字段声明为必须自动装配的最终字段。
可以找到一个简单的例子in the reference documentation(锚之后的第三个代码示例)。
Another one from reference documentation(锚之后的第二个代码示例)。