spring篇(四)大闹阎王殿

BeanFactory的XML之旅

上一篇我们介绍了spring IOC容器的XML配置中,是如何表达依赖的,接着就构造方法注入XML、setter方法注入XML继续学习二者之间的联系。
1.< property >和< constructor-arg>中可用的配置项
1.1< value >为主体对象注入简单的数据类型。(比如:string、int、integer)

<constructor-arg>
  <value>1111<value>
<constructor-arg> 

<property name ="attribute" value ="2222"/>

1.2< ref >引用容器中其它对象的实例。可以通过local、parent、bean来指定引入对象的beanName是什么。

<constructor - arg>
<ref local="djNewPersister">
<constructor - arg>
或者
<constructor - arg>
<ref parent="djNewPersister">
<constructor - arg>
或者
<constructor - arg>
<ref bean="djNewPersister">
<constructor - arg>

1.3< iderf >为当前对象注入所依赖的对象名称。

<perporty name = "NewPersister">
 <iderf bean = "djNewPersister"/>
 </perporty>

1.4内部< bean >将私有的对象定义仅局限在当前对象。

<bean id = "diNewPersister" class = "..FXNewsProvider">
<constructor - arg index ="0">
<bean class="..impl.DowJonesNewListener">
<bean>
<constructor-arg>

1.5< list > < list >对应注入对象类型为java.util.List及其子类或数组类型的依赖对象。

public class MockDen{
private List parme1;
private string[] parme2;
//setter getter方法
.......
}

配置
<porperty name ="parme1">
<list>
<value>somrthing</value>
<ref bean = "someBeanName"/>
<bean class ="...."/>
<list>

1.6< set >无序注入
1.7< map >通过指定的key来获取相应的值。

public class MockDemo{

private Map mapping

//setter getter 方法

}
<property name="valueSet">
<map>
<entry kew ="strValuekey">
<value>something </value>
</entry>

1.8< props>简化的< map >,只有固定的格式

public class MockDemo{

private Properties emailAddrs;

//setter getter 方法
}
<property name ="valueSet">
<props>
  <prop key="author" >fijohnwang@gmail.com</prop>
  <props>
  </porperty>

1.9< null/ >空元素,不常使用。
2.autowire属性
除了通过配置明确指定bean之间的依赖关系,spring还提供了根据bean定义的某些特征将相互依赖的某些bean自动绑定。
< bean >的autowire属性,指定当前bean定义采用某种类型的自动绑定模式。换句话说就是autowire是实现自动装配的标识。
而spring提供了5种自动绑定模式,接下来一一介绍!!
2.1 no 默认自动绑定模式,不采用任何形式的自动绑定。
2.2byName按照类中声明的实例变量,与XML配置文件中声明的bean定义的beanName的值进行匹配。

public class Foo{
 private Bar empbasis;
 .....
 //相应的setter方法
}

<bean id="fooBean" class = "foo" autowtre="byName">
<bean>
<bean id="empbasis" class ="Bar">
</bean>`


2.3byType 根据当前bean定义类型,分析相应的依赖对象的类型,然后到容器所管理的所有bean定义中寻找与依赖对象类型相同的bean定义,找到符合条件的,自动绑入当前bean定义。
2.4 constructor
byName 和 byType类型的自动绑定模式是针对property的,constructor的自动绑定模式是针对构造方法参数的类型进行的,它同样是byType类型的绑定模式。但是constructor是匹配构造方法的参数,而不是实例属性的类型。

public class Foo{
private Bar bar;
public Foo(Bar arg){
   
   this.bar=arg;
   }
}

<bean id ="foo" class="...Foo" autowire="constructor"/>
<bean id="bar" class="...Bar">
</bean>

2.5 autodetect
byType和constructor的结合体。
3.depends-on属性
保证一个Bean在初始化前保证depends-on指定的Bean已经完成初始化。比如User类加载前需要Friends类先加载,那么可以:

<beans>
	<bean id="User" class="com.test.User" depends-on="UserFriends">
		<!--省略其他配置-->
	</bean>
	<bean id="UserFriends" class="com.test.Friends">
		<!--省略其它配置-->
	</bean>
</beans>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小倪长头发啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值