..


赞助商链接

核心容器 - 二传手依赖注入

使用构造依赖注入可以导致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" />



    



 </地图>



  



 </物业>







 </豆>



它留给上如合并征收,内豆和合作者等问题深入读者。

春天的Java指南
电子学习
Linux操作系统(课程) Linux操作系统(课程)
完整指南开源系统。 从49€。
PHP(课程) PHP(课程)
全部课程用于创建动态Web站点。 从49€。
Ruby和Ruby on Rails的(课程) Ruby和Ruby on Rails的(课程)
创建Ruby和RoR的软件和Web应用程序。 从39€。
赞助商链接