为什么需要自动装配?自动装配概念的解释是什么?
@autowired
Spring 框架中的注释。
不需要自动装配,只是方便。
这意味着,如果您有一个需要一个的属性,InterfaceA
并且在 Spring 中声明了一个类型为 的 bean InterfaceA
,而不是使用 XML 手动“连接”关系(将 bean 引用设置为另一个的属性),您可以让Spring为你做接线。
这是初学者的常见问题。由于 bean 是使用DI 注入的(setter 注入、构造函数注入),为什么我们需要自动装配?自动布线也做同样的事情,对吧?
答案是,它使您免于编写更多代码。
如果使用 XML 文件,使用autowire
属性可以避免在 bean 定义中编写接线代码。
请看下面的代码。
不带自动连线的配置代码:
<bean id="employee" class="com.Employee">
<property name="name" value="Dexter"></property>
</bean>
<bean id="employeeService" class="com.EmployeeService">
<property name="employee" ref="employee"></property>
</bean>
自动接线的配置代码:
<bean id="employee" class="com.Employee">
<property name="name" value="Dexter"></property>
</bean>
<bean id="employeeService" class="com.EmployeeService" autowire="byName" />
请注意,我们不必编写任何内容来引用 EmployeeService 的属性,即 Employee。但还是被注入了。 自动装配使容器可以搜索 bean 配置并在 bean 之间进行协作,而开发人员没有特别提及这些。
如果我们使用 annotation,甚至我们不必在 XML 文件中写任何东西,包括 thisautoware="byName"
等。只需@Autowired
在 bean 的 setter/field/constructor上就足够了。