语境
Bean是我们在以前的帖子中看到的春季框架中最基本的单位。 Bean Creation可能包括创建普通对象,该对象剂量不依赖于它们仅在原始数据类型中创建的其他对象。
但是我们创建的大多数对象都取决于开发人员创建的其他对象或库对象。
现在,使用BEAN,我们可以控制弹簧框架如何在应用程序中创建和管理Java对象。当对象之间存在依赖性时,弹簧框架也应理解并构造因对象(bean)。
接线
因此,为了使框架创建依赖的豆对象并在需要时将其注入运行时,称为“接线” 。
这里的弹簧框架处理对象之间的连接并确保创建并注入所需的对象。
连接豆的方法
Spring提供了多种通过依赖注入,基于注释的接线,基于XML的接线,基于Java的配置接线,组件扫描的多种方法。
SpringBoot提供
@Autowired
注释以自动接线相关对象。类似地,Java具有
@Inject
注释,可以在没有弹簧的情况下使用更多的通用剂量,以连接依赖对象。等框架支持
@Inject
注释是Java依赖注入(JSR-330)标准的一部分,该标准由Spring
使用@Autowed注释的方法
注释@Autowired
通过野外注入,构造函数注入,设置器注入,可选依赖性和@Qualifier
注释。
现场注射
要向bean注入依赖对象,我们可以将@Autowired
注释放在类字段上,然后框架检测并注入适当的依赖项。
@Autowired
private ExampleBean someBean;
构造函数注入
创建bean时,我们可以将构造函数参数作为@Autowired
注入所需的对象。弹簧将自动将“需求对象”作为构造器中的参数传递。
@Autowired
public ExampleBean(DependentBean dependentBean){
this.dependentBean = dependentBean;
}
喷射器注入
注入依赖项的另一种方法是使用@Autowired
注释的设置器方法,因此Spring可以使用它来注入所需的依赖关系。
@Autowired
public void setDependentBean(DependeentBean bean){
this.dependentBean = bean;
}
可选的依赖注入
有时对对象的依赖性是可选的,就像可以创建某些对象的情况下,而无需依赖所有对象。这可以使用@Autowired
中的Optional
和required=false
来实现。
默认情况下,
@Autowired
不是可选的,并且总是注入依赖关系。
@Autowired(required = false)
private Optional<DependentBean> bean;
自动使用预选赛
有时候,我们在上下文中有多个bean,现在,如果我们仅在现场指定@Autowired
,则构造函数,setter弹簧框架会混淆要注入哪种确切的依赖项,因为同一类型的多个对象可以在上下文中使用。 /p>
要删除歧义并提供确切的依赖对象以注入@Qualifier
与value
指定用于此依赖项注入的确切bean。
@Autowired
@Qualifier(value = "someSpecificBean")
private DependentBean bean;
@Inject
也可以类似于@Autowired
注释,略有差异。