Spring入门学习——用XML配置自动装配Bean

来源:互联网 发布:淘宝最大的店铺2017 编辑:程序博客网 时间:2024/06/05 08:08
当一个Bean需要访问另一个Bean时,可以显式指定引用装配它。Spring IoC容器能够帮助我们自动装配Bean,只要在<bean>的autowire属性中指定自动装配模式就行。
 模式 描述 no* 不执行自动装配。必须显式地装配依赖。 byName 对于每个Bean属性,装配一个与之同名的Bean。 byType 对于每个Bean属性,装配类型与之兼容的一个Bean,如果找到超过一个Bean,将抛出UnsatisfiedDependencyException异常。 Constructor 对于每个构造程序参数,首先寻找与之参数兼容的Bean。然后,选择具有最多匹配参数的构造程序,对于存在歧义的情况,将抛出UnsatisfiedDependencyException异常。 autodetect 如果找到一个没有参数的默认构造程序,依赖将按照类型自动装配。否则,将由构造程序自动装配。【Spring3.x没有该值】     
自动装配功能强大,但是会降低Bean配置的可读性,因为自动装配实在Spring在运行时执行,无法从Bean配置文件中得到Bean装配方法。建议仅将自动装配应用到组件依赖不复杂的应用程序中。

设置为byType后,Spring将试图装配类型与PrefixGenerator兼容的Bean,因此下方代码将装配DatePrefixGenerator。


<bean id="sequenceGenerator" class="com.cgy.springrecipes.sequence.SequenceGenerator"
autowire="byType">
<!--
<property name="prefixGenerator" ref="datePrefixGenerator" />
-->
<property name="suffix" value="CGY"/>
<property name="initial" value="10000" />
</bean>

<bean id="datePrefixGenerator" class="com.cgy.springrecipes.sequence.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd" />
</bean>

设置为byName后,Sprnig将试图装配一个类型与该属性名相同的Bean,因为Bean的name属性在一个容器中是唯一的,按照

名称的自动装配不会导致歧义。


<bean id="sequenceGenerator" class="com.cgy.springrecipes.sequence.SequenceGenerator"
autowire="byName">
<!-- <property name="prefixGenerator" ref="datePrefixGenerator" /> -->
<property name="suffix" value="CGY" />
<property name="initial" value="10000" />
</bean>

<!-- <bean id="datePrefixGenerator" class="com.cgy.springrecipes.sequence.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd" />
</bean> -->
<bean id="prefixGenerator" class="com.cgy.springrecipes.sequence.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd" />
</bean>






0 0
原创粉丝点击