Spring AutowiredAnnotationBeanPostProcessor仅使用参数较少的构造函数

时间:2015-09-18 07:45:40

标签: java spring autowired

以下是来自AutowiredAnnotationBeanPostProcessor的弹簧文档的引用,

  

任何给定bean类只有一个构造函数(最大值)可以携带它   将'required'参数设置为true的注释,指示   构造函数在用作Spring bean时自动装配。如果多个   非必需的构造函数带有注释,它们将是   被视为自动装配的候选人。构造函数与   匹配可以满足最大数量的依赖关系   将选择Spring容器中的bean。如果没有   候选人可以满意,然后是默认构造函数(如果存在)   将会被使用。带注释的构造函数不必是公共的。

由于我是Spring的新手,我只知道当我们使用@Autowired时,它会调用无参数构造函数来注入依赖。

这个required如何与构造函数一起使用,这个引用意味着什么?

1 个答案:

答案 0 :(得分:4)

使用Spring自动装配东西有两种方法:基于字段和基于构造函数。我认为到目前为止你只熟悉现场自动装配。该引用是指在构造函数上(或者也)使用@Autowired注释。这意味着Spring将尝试自动装配构造函数参数。因此,您根本不需要使用无参数构造函数。

如果您计划让您的类不可变,那么基于构造函数的自动装配是必不可少的,即将字段声明为必须自动装配的最终字段。

实施例

可以找到一个简单的例子in the reference documentation(锚之后的第三个代码示例)。

稍微more complex one

Another one from reference documentation(锚之后的第二个代码示例)。