@Autowired注释在Java中的好处

也许,由于我的英语错误,我无法理解使用@Autowired注释的好处。 根据教程,我们可以通过@Autowired将第一个(I。)案例简化为第二个案例(II。)。 我的问题是,@ Autowired是什么意思?因为它不再告诉,因为不使用@Autowired,编译器可以根据声明得出“EmpDao emDao”和“EmpManager”密切相关。 从这里引用的代码 一世。
    <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;
   }

   ...
}
II。
<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
是特定于春季的。
@Inject
是标准的等效物。它是一个注释,它告诉上下文(春天,或者在
@Inject
的情况下 - 任何DI框架)尝试将对象设置到该字段中。 编译器与此无关 - 它是在运行时实例化对象的DI框架(spring),然后在您指定的点处设置它们的依赖关系 - 通过XML或通过注释。 我同意DI框架可能会尝试将依赖项注入所有字段,即使它们没有注释。 (如果要排除特定字段,请对其进行注释)。但是他们选择了另一种策略(配置超过惯例)。顺便说说: 如果使用xml配置并选择某种形式的自动装配,bean的依赖关系将自动自动装配,而无需指定任何内容 您可以指定每个上下文的自动装配设置。     
当服务器引导自己时。它找到了
 <context:annotation-config />
在应用程序上下文中,然后遍历上下文中定义的类。如果有任何自动装配的bean,它会通过引用上下文文件将其注入到类中。 基本上,它促进了约定优于配置。这就是大多数框架目前为缩短开发时间而做的事情。     
@Autowired Spring注释告诉Spring一个名为'empDao'的bean并将其注入到EmpManager类中,而无需在spring配置文件中添加empDao bean作为属性。     
@Autowired告诉Spring在该bean中找到声明类型和连线的bean,而不是要求通过bean名称进行显式查找。在某些情况下,如果在给定的Spring上下文中只有一个类型的实现,它可以使配置应用程序更容易。     

要回复问题请先登录注册