【问题标题】:Spring AutowiredAnnotationBeanPostProcessor uses only parameter less constructorSpring AutowiredAnnotationBeanPostProcessor 仅使用无参数构造函数
【发布时间】:2015-09-18 07:45:40
【问题描述】:

以下是 AutowiredAnnotationBeanPostProcessor 的 springs 文档的引用,

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

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

required 如何与构造函数一起使用?这句话是什么意思?

【问题讨论】:

    标签: java spring autowired


    【解决方案1】:

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

    如果你打算让你的类不可变,那么基于构造函数的自动装配是必不可少的,即字段声明为 final,必须自动装配。

    示例

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

    一点点more complex one

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

    【讨论】:

    • 只是想知道@Autowire如何通过调用参数化构造函数来注入依赖,你能举一个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多