2017-06-15 42 views
-2

希望这个问题很简单。我读了Spring Framework Reference:beans-java部分,我遇到此使用示例 enter image description here如何理解有关@Autowired的弹簧参考文档

,混淆我是在最后的说明,具体在哪里,它说

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

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

我试图重现这个,但文档没有提供AccountRepository类或TransferService类,我是一个noob,所以不知道他们应该看什么。所以一个可重复的例子将是可取的。

+0

该说明提到'RepositoryConfig'类,它是目标bean,它们引用它的构造函数。 – Andreas

+0

我对你的误解感到困惑。在'RepositoryConfig'构造函数中,''Autowired'不是必需的。因此'RepositoryConfig'是bean(类),并且由于它有一个构造函数,所以在构造函数中不需要'@ Autowired' 。 –

+0

正如我所说我是一个noob(这就是为什么我正在阅读文档)。由于RepositoryConfig构造函数的一个参数使用了Datasource bean,“target bean”将我抛弃了。当你解释它时 - 确定它现在有意义,但它没有点击我。我试图重现它,但代码并不完整(尽管现在我想它可以用我自己的代码进行测试),所以我确实努力弄清楚了这一点,并在网上进行了一些搜索。我不赞赏倒票。我还不清楚是什么让RepositoryConfig成为一个bean,因为这个类有3个注释,它是其中的任何一个吗? – mdo123

回答

1

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

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

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