Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 春天什么';使用ApplicationContex.getBean()和@Autowired有什么不同?我如何决定选择哪一个?_Spring_Annotations_Javabeans_Broadleaf Commerce - Fatal编程技术网

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

Spring 春天什么';使用ApplicationContex.getBean()和@Autowired有什么不同?我如何决定选择哪一个?,spring,annotations,javabeans,broadleaf-commerce,Spring,Annotations,Javabeans,Broadleaf Commerce,我想通过阅读阔叶来学习一些春天的知识 为什么一些broadLeaf使用ApplictionContext.getBean()而不是@Autowired annotation?示例 @Service public class Car { @Autowired public Person driver; } @自动布线在Bean Car的布线中得到尊重。默认构造函数(new Car())通过Spring创建实例后,该字段将直接填充 ApplictionContext.getBean()

我想通过阅读
阔叶
来学习一些春天的知识

为什么一些
broadLeaf
使用ApplictionContext.getBean()而不是@Autowired annotation?

示例

@Service
public class Car {
  @Autowired
  public Person driver;
}
@自动布线在Bean Car的布线中得到尊重。默认构造函数(
new Car()
)通过Spring创建实例后,该字段将直接填充

ApplictionContext.getBean()
是一样的,但是:您必须用自己的代码调用它

@Autowired
@Inject
相同。区别不在于功能,而在于设计。Spring使用
@Inject
的上下文和依赖项注入(CDI)作为控制反转(IoC)原理的一部分,应该是首选。这就是为什么你好!

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

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

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


如果您遇到的情况是,
@Autowired
无法满足您的需求,因为您需要有最大的灵活性来获得一个bean,那么请检查
applicationcontext
当时是否可以帮助您。

这可能是我遇到的最好的解释。非常感谢。