gpt4 book ai didi

spring 使用 ApplicationContex.getBean() 和 @Autowired 有什么不同?我如何决定选择哪一个?

转载 作者:行者123 更新时间:2023-12-02 03:22:02 25 4
gpt4 key购买 nike

我试图通过阅读broadLeaf来学习一些spring知识。

为什么有些broadLeaf使用ApplictionContext.getBean()而不是@Autowired注释?

最佳答案

你好!

从根本上来说,它们的目的是做同样的事情,即从 spring 容器(即 ApplicationContext)获取一个 bean 来使用。您可以认为 @Autowired 实际上会在幕后完成由 ApplictionContext.getBean() 完成的工作。

不同之处在于,使用 ApplictionContext.getBean() 时,开发人员自己负责整个过程。他们必须通过手动调用 getBean 来确保获得正确的 Bean () 具有正确的参数。但是当使用 @Autowired 时,开发人员不需要手动执行此过程。相反,他们只需要声明他们想要什么 bean,Spring 就会为他们获取这些 bean。因此,这在某种程度上就是控制反转(IOC)的精神,因为控制上述任务的责任被倒置并从开发人员转移到了框架。

作为最佳实践,我们应该始终首先使用@Autowired。不仅更加方便,不易出错,而且我们的领域代码不会依赖于 Spring 框架类(即 ApplictionContext),这使得我们的代码看起来更加干净。

如果您遇到 @Autowired 无法满足您的要求的情况,因为您需要最灵活地获取 bean,那么请检查 ApplictionContext 是否可以帮助您那时。

关于spring 使用 ApplicationContex.getBean() 和 @Autowired 有什么不同?我如何决定选择哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54476536/

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