gpt4 book ai didi

java - Spring AutowiredAnnotationBeanPostProcessor 仅使用无参数构造函数

转载 作者:行者123 更新时间:2023-11-29 03:04:46 26 4
gpt4 key购买 nike

下面引用自 AutowiredAnnotationBeanPostProcessor 的 springs 文档,

Only one constructor (at max) of any given bean class may carry this annotation with the 'required' parameter set to true, indicating the constructor to autowire when used as a Spring bean. If multiple non-required constructors carry the annotation, they will be considered as candidates for autowiring. The constructor with the greatest number of dependencies that can be satisfied by matching beans in the Spring container will be chosen. If none of the candidates can be satisfied, then a default constructor (if present) will be used. An annotated constructor does not have to be public.

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

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

最佳答案

Spring 有两种 Autowiring 方法:基于字段的和基于构造函数的。我认为到目前为止您只熟悉按字段 Autowiring 。这句话指的是在构造函数上使用 @Autowired 注释代替(或同时)。这意味着 Spring 将尝试 Autowiring 构造函数参数。因此,您根本不再需要无参数构造函数。

如果您计划让您的类不可变,那么基于构造函数的 Autowiring 是必不可少的,即字段声明为 final 且必须 Autowiring 。

例子

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

一点点more complex one .

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

关于java - Spring AutowiredAnnotationBeanPostProcessor 仅使用无参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com