也许是因为我的英文不对,所以我无法理解使用@Autowired注释的好处。
根据教程,我们可以通过@Autowired将第一种情况简化为第二种情况。
我的问题是@Autowired是什么意思?因为它不再显示任何内容,所以由于不使用@Autowired,编译器可以根据声明声明“EmpDao emDao”和“EmpManager”是紧密相关的。
从here引用的代码
一世。
<bean id="empDao" class="EmpDao" />
<bean id="empManager" class="EmpManager">
<property name="empDao" ref="empDao" />
</bean>
public class EmpManager {
private EmpDao empDao;
public EmpDao getEmpDao() {
return empDao;
}
public void setEmpDao(EmpDao empDao) {
this.empDao = empDao;
}
...
}
二。
<context:annotation-config />
<bean id="empManager" class="autowiredexample.EmpManager" />
<bean id="empDao" class="autowiredexample.EmpDao" />
import org.springframework.beans.factory.annotation.Autowired;
public class EmpManager {
@Autowired
private EmpDao empDao;
}
最佳答案
@Autowired
是特定于 Spring 的。 @Inject
是标准的等效项。它是一个注释,告诉上下文( Spring ,或在@Inject
的情况下-任何DI框架)尝试将对象设置为该字段。
编译器与此无关,它是DI框架( Spring )在运行时实例化您的对象,然后通过XML或批注将它们的依赖项设置在您指定的位置。
我同意DI框架尝试将依赖项注入(inject)所有字段(即使未添加注释)也是可能的情况。 (如果要排除特定字段,请对其进行注释)。但是他们选择了另一种策略(常规配置)。顺便一提:
关于java - Java中@Autowired注释的好处,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4997836/