【问题标题】:How to understand the spring reference documentation regarding @Autowired如何理解关于 @Autowired 的 spring 参考文档
【发布时间】:2017-11-18 14:24:44
【问题描述】:

希望这个问题足够简单。我正在阅读Spring Framework Reference:beans-java 部分,我遇到了这个用法示例

让我困惑的部分是最后的注释,特别是它说的地方

还要注意,如果目标是没有必要指定@Autowired bean 只定义了一个构造函数;在上面的例子中,@Autowired 是 在 RepositoryConfig 构造函数中不需要。

我不太明白为什么我可以从RepositoryConfig() 中删除@Autowired?在这种情况下,目标 bean 是什么,它们指的是什么构造函数?

我试图重现这一点,但文档没有提供 AccountRepository 类或 TransferService 类,而且我是菜鸟,所以不确定它们应该是什么样子。所以一个可重现的例子是可取的。

【问题讨论】:

  • 注释中提到了RepositoryConfig类,这是目标bean,他们指的是它的构造函数。
  • 我对您的误解感到困惑。引用说 @AutowiredRepositoryConfig 构造函数上不是必需的。 所以 RepositoryConfig 是 bean(类),因为它有一个构造函数,所以不需要 @Autowired在那个构造函数上。
  • 正如我所说的我是一个菜鸟(这就是我阅读文档的原因)。 “目标 bean”让我失望,因为 RepositoryConfig 构造函数的参数使用了 Datasource bean。当你解释它时 - 现在确定它是有道理的,但它并没有为我点击。我试图重现它,但代码不完整(虽然现在我想我可以用我自己的代码测试它)所以我确实努力弄清楚并在网上做了一些搜索。我不欣赏反对票。我仍然不清楚是什么使 RepositoryConfig 成为 bean,因为该类有 3 个注释,是它们中的任何一个吗?

标签: java spring autowired spring-annotations


【解决方案1】:

4.3 之前的 Spring 版本要求您使用 @Autowired 注释要使用的构造函数。即使你的类只有一个构造函数。

从 Spring 4.3 开始,当您的类有一个构造函数时,您可以省略构造函数上的 @Autowired,因为 Spring 会自动假定您要使用该构造函数。

请参阅this blog 了解更多信息和here Jira 票证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多