在Spring框架,可以用 auto-wiring 功能会自动装配Bean。要启用它,只需要在 <bean>定义“autowire”属性。
<bean id="customer" class="com.yiibai.common.Customer" autowire="byName" />
在Spring中,支持 5 自动装配模式。
  1. no – 缺省情况下,自动配置是通过“ref”属性手动设定
  2. byName – 根据属性名称自动装配。如果一个bean的名称和其他bean属性的名称是一样的,将会自装配它。
  3. byType – 按数据类型自动装配。如果一个bean的数据类型是用其它bean属性的数据类型,兼容并自动装配它。
  4. constructor – 在构造函数参数的byType方式。
  5. autodetect – 如果找到默认的构造函数,使用“自动装配用构造”; 否则,使用“按类型自动装配”。

示例

Customer 和 Person 对象自动装配示范。
package com.yiibai.common;

public class Customer
{
private Person person; public Customer(Person person) {
this.person = person;
} public void setPerson(Person person) {
this.person = person;
}
//...
} package com.yiibai.common; public class Person
{
//...
}

1. Auto-Wiring ‘no’

这是默认的模式,你需要通过 'ref' 属性来连接 bean。
<bean id="customer" class="com.yiibai.common.Customer">
<property name="person" ref="person" />
</bean> <bean id="person" class="com.yiibai.common.Person" />

2. Auto-Wiring ‘byName’

按属性名称自动装配。在这种情况下,由于对“person” bean的名称是相同于“customer” bean 的属性(“person”)名称,所以,Spring会自动通过setter方法将其装配 – “setPerson(Person person)“.

<bean id="customer" class="com.yiibai.common.Customer" autowire="byName" />
<bean id="person" class="com.yiibai.common.Person" />

3. Auto-Wiring ‘byType’

通过按属性的数据类型自动装配Bean。在这种情况下,由于“Person” bean中的数据类型是与“customer” bean的属性(Person对象)的数据类型一样的,所以,Spring会自动通过setter方法将其自动装配。– “setPerson(Person person)“.

<bean id="customer" class="com.yiibai.common.Customer" autowire="byType" />
<bean id="person" class="com.yiibai.common.Person" />

4. Auto-Wiring ‘constructor’

通过构造函数参数的数据类型按属性自动装配Bean。在这种情况下,由于“person” bean的数据类型与“customer” bean的属性(Person对象)的构造函数参数的数据类型是一样的,所以,Spring通过构造方法自动装配 – “public Customer(Person person)“.

<bean id="customer" class="com.yiibai.common.Customer" autowire="constructor" />

    <bean id="person" class="com.yiibai.common.Person" />

注意:

项目中autowire结合dependency-check一起使用是一种很好的方法,这样能够确保属性总是可以成功注入。

<bean id="customer" class="com.yiibai.common.Customer"

            autowire="autodetect" dependency-check="objects" />

<bean id="person" class="com.yiibai.common.Person" />

结论

在我看来,Spring ‘auto-wiring’ 以极大的成本做出更快开发效率 - 它增加了对整个 bean 配置文件复杂性,甚至不知道哪些bean将自动装配哪个Bean。

在实践中,我更顷向手动关联创建,它始终是干净,也很好地工作,或者使用 @Autowired 注解,这是更加灵活和建议。

最新文章

  1. CSS实现可变行数垂直居中
  2. 2Struts2基础----青软S2SH(笔记)
  3. Tensorflow学习笔记4:分布式Tensorflow
  4. 【转】jquery的extend和fn.extend
  5. CSS 继承深度解析
  6. PHP-----函数和二进制
  7. application 网站计数器
  8. Python的&quot;数组&quot;储存
  9. jquery二级目录选中当前页的样式
  10. Bzoj 3747: [POI2015]Kinoman 线段树
  11. Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)
  12. Linux 如何打开端口
  13. Linux-共享内存通信
  14. Python学习笔记-基础1
  15. Migrate MySQL database using dump and restore
  16. DrawableAnimation小练习
  17. 关于Autosar中的NM模块的理解
  18. 【二分图带权匹配】Anagram @山东省第九届省赛 A
  19. eclipse 对 hadoop1.2.1 hdfs 文件操作
  20. 【Java并发编程】9、非阻塞同步算法与CAS(Compare and Swap)无锁算法

热门文章

  1. 《metasploit渗透测试魔鬼训练营》学习笔记第四章—web应用渗透
  2. Java8 Stream()关于在所有用户的所有上传记录中,找出每个用户最新上传记录
  3. PHP面试系列 之框架(一)---- MVC框架基本工作原理
  4. 电脑需要重启才能连上WLAN
  5. Python KafkaProducer and KafkaConsumer的开发模块
  6. 错误:maximum number of expressions in a list is 1000
  7. CentOS查看卸载openjdk
  8. JavaScript this用法
  9. LINUX升级PHP版本至5.4.26
  10. iOS学小程序从0到发布(适合iOS开发看)