..
使用构造依赖注入可以导致bean之间建立循环依赖。 例如,如果一个传出受到头需要实例化一个对象B,但在同一时间的对象一个对象B的需要,它会创建一个不能得到解决使用构造依赖注入依赖。
在这种情况下,必须使用setter依赖注入是非常相似,但不同的构造中,依赖注入的对象被实例化后的事实所在。 下面是一个例子:
{公共类Bean2
私人GenericService genericService;
公共无效setGenericService(GenericService genericService){
this.genericService = genericService;
}
公共GenericService getGenericService(){
genericService回报;
}
/ **
*业务逻辑.............
* /
}
nell'applicationContext。XML
<bean id="setterBean" class="it.mrwebmaster.di.setter.Bean2"> 物权name="genericService" ref="genericService" /> </豆>
除了解决的圆形dipenze二传手依赖注入问题也可以在运行时重新配置,豆类,这些是首选的构造原因。 有些学校的思想,然而,说好是使用entrabe:进行必要的依存关系和这些选项的设置器构造。 这是建议使用的setter,因为它是非常罕见的,有可选的依赖关系。
除了直接投资的基本使用,还有其他功能,如Spring提供空字符串,也可以注入空字段:
< - !NULL值1 - > <bean id="nullBean1" class="it.mrwebmaster.di.constructor.bean" factory-method="createBean"> <constructor-arg type="java.lang.Integer" value="0" /> <constructor-arg type="java.lang.String" value="" /> <constructor-arg type="it.mrwebmaster.di.constructor.GenericService"> <null/> </构造函数参数> </豆> < - !2 NULL值 - > <bean id="nullBean2" class="it.mrwebmaster.di.setter.Bean2"> 物权name="genericService"> <null/> </财产> </豆>
Spring还提供了一个管理型List集合,设置,地图,属性,并通过标记列表,设置,地图和道具:
{公共类CollectionBean
私人名单<GenericService> beanList;
beanProps私人性质;
私人<String>的beanSet日;
私人地图<Integer, string> beanMap;
/ **
*业务逻辑......................
* /
<GenericService> getBeanList公开名单(){
beanList回报;
}
公共地图<Integer, string> getBeanMap(){
beanMap回报;
}
公共属性getBeanProps(){
beanProps回报;
}
<String>的getBeanSet公开组(){
beanSet回报;
}
公共无效setBeanList(名单<GenericService> beanList){
this.beanList = beanList;
}
公共无效setBeanMap(地图<Integer, string> beanMap){
this.beanMap = beanMap;
}
公共无效setBeanProps(属性beanProps){
this.beanProps = beanProps;
}
公共无效setBeanSet(设置<String>的beanSet){
this.beanSet = beanSet;
}
}
nell'applicationContext。XML
< - 豆宝典 - >
<bean id="collectionBean" class="it.mrwebmaster.di.collection.CollectionBean">
< - LIST - >
物权name="beanList">
<list>
<ref bean="genericService"/>
</列表>
</物业>
< - 属性 - >
物权name="beanProps">
<props>
<prop key="prop1">值1 </道具>
<prop key="prop2">值2 </道具>
<prop key="prop3">值3 </道具>
</道具>
</物业>
<! - 设置 - >
物权name="beanSet">
<SET>
<VALUE>到</值>
<VALUE> B </值>
</设置>
</物业>
< - 地图 - >
物权name="beanMap">
<MAP>
<entry key="1" value="value1" />
</地图>
</物业>
</豆>
它留给上如合并征收,内豆和合作者等问题深入读者。
| |
Linux操作系统(课程)
完整指南开源系统。 从49€。 |
| |
PHP(课程)
全部课程用于创建动态Web站点。 从49€。 |
| |
Ruby和Ruby on Rails的(课程)
创建Ruby和RoR的软件和Web应用程序。 从39€。 |