@Autowired注释在Java中的好处

也许,因为我的英语错误,我无法理解使用@Autowired注释的好处。

根据教程,我们可以通过@Autowired将第一个(I。)案例简化为第二个案例(II。)。

我的问题是,@ Autowired是什么意思? 因为它不再告诉,因为不使用@Autowired,编译器可以根据声明得出“EmpDao emDao”和“EmpManager”密切相关。

从这里引用的代码

一世。

    public class EmpManager { private EmpDao empDao; public EmpDao getEmpDao() { return empDao; } public void setEmpDao(EmpDao empDao) { this.empDao = empDao; } ... } 

II。

    import org.springframework.beans.factory.annotation.Autowired; public class EmpManager { @Autowired private EmpDao empDao; } 

@Autowired是特定于春季的。 @Inject是标准的等价物。 它是一个注释,它告诉上下文(spring,或@Inject的情况 – 任何DI框架)尝试将对象设置到该字段中。

编译器与此无关 – 它是在运行时实例化对象的DI框架(spring),然后在您指定的点处设置它们的依赖关系 – 通过XML或通过注释。

我同意DI框架可能会尝试将依赖项注入所有字段,即使它们没有注释。 (如果要排除特定字段,请对其进行注释)。 但他们选择了另一种策略(配置超过惯例)。 顺便说说:

  • 如果使用xml配置并选择某种forms的自动assembly,bean的依赖关系将自动自动assembly,而无需指定任何内容
  • 您可以指定每个上下文的自动assembly设置。

当服务器引导自己时。 它找到了

   

在应用程序上下文中,然后遍历上下文中定义的类。 如果有任何自动assembly的bean,它会通过引用上下文文件将其注入到类中。

基本上,它促进了约定优于配置。 这就是大多数框架目前为缩短开发时间所做的工作。

@Autowired Spring注释告诉Spring一个名为’empDao’的bean并将其注入到EmpManager类中,而无需在spring配置文件中添加empDao bean作为属性。

@Autowired告诉Spring在该bean中找到声明类型和连线的bean,而不是要求bean名称显式查找。 在某些情况下,如果在给定的Spring上下文中只有一个类型的实现,它可以使配置应用程序更容易。