首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

3.4.9bean的自动安装

2012-09-07 
3.4.9bean的自动装配spring支持4种自动装配:byName、byType、constructor和autodetect。当使用byName绑定时,s

3.4.9bean的自动装配
      spring支持4种自动装配:byName、byType、constructor和autodetect。
      当使用byName绑定时,spring会将每一个属性绑定到同名的bean上。所以,如果目标bean包含一个名为foo的属性并且在BeanFactory种定义过一个名为foo的bean,则名为foo的bean就会被指定到目标的foo属性上。见代码的byName例子。
      当使用byType自动装配时,Spring会将目标bean上的每一个属性自动跟BeanFactory种同类型的bean自动装配。所以如果目标bean上包含一个String类型的属性并且BeanFactory中包含一个String类型bean,Spring将把String类型的bean关联到目标beanString属性上。如果有布置一个相同类型的bean,此例中是String,Spring就会因为不能决定到底应该与谁自动装配而抛出一个异常。
      constructor绑定方式跟byType绑定功能上相似,只是他使用构造方法而不是设置方法来进行注入,Spring会去匹配参数最多的构造方法。因此如果你的bean有两个构造方法,其中一个接受一个String而另一个接受一个String和一个Integer作为参数,而BeanFactory中正好包含一个String bean和一个Integer bean,则Spring将使用两个参数的构造方法。
      最后一种方式,autodetect,让Spring在constructor和byType两种方法中自动选择。如果你的bean有一个默认构造函数,Spring就使用byType方式,否则就使用constructor方式。
下面就是例子代码:

Target(Foo, Bar)Target{foo=com.apress.prospring2.ch03.autowiring.Foo, foo2=null, bar=com.apress.prospring2.ch03.autowiring.Bar}

此时何constructor的方法结果一样。
总结:
大多数情况下,对于你是否应该使用自动装配这个问题的回答肯定是否定的。自动装配能为你在小型应用中节省时间,但很多时候,它将导致不好的时间,使大型应用程序缺乏灵活性。

热点排行