【问题标题】:Why is autowiring required? What is the explanation of the concept of autowiring?为什么需要自动装配?自动装配概念的解释是什么?
【发布时间】:2012-04-23 20:57:32
【问题描述】:

为什么需要自动装配?自动装配这个概念的解释是什么?

Spring Framework 中的@autowired 注释。

【问题讨论】:

  • 谁告诉你这么荒谬的真相?
  • @vacuum ...我是这个框架的新手..我在每个使用autowire注释的示例中都引用了一些示例..所以我认为它是manadory ...

标签: spring spring-mvc spring-security


【解决方案1】:

这是初学者的常见问题。由于 bean 是使用 DI 注入的(setter 注入、构造函数注入),为什么我们需要自动连接?自动布线也做同样的事情,对吧?

答案是,它使您免于编写更多代码。

  1. 如果使用 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 之间进行协作,而开发人员无需特别提及这些。

  2. 如果我们使用注解,即使我们不必在XML文件中写任何东西,包括这个autoware="byName"等等。只需在bean的setter/上写@Autowired字段/构造函数就足够了。

【讨论】:

  • 我喜欢这个解释!一个很好的例子,它展示了没有自动装配和有它的情况。
【解决方案2】:

不需要自动装配,只是方便。

这意味着如果你有一个需要InterfaceA 的属性,并且在 Spring 中声明了一个类型为 InterfaceA 的 bean,而不是使用 XML 手动“连接”关系(设置一个 bean作为另一个属性的引用),您可以让 Spring 为您完成接线。

【讨论】:

    猜你喜欢
    • 2013-09-28
    • 2018-04-16
    • 2015-12-02
    • 1970-01-01
    • 2018-07-05
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多