OSGI Blueprint入门之七

     Blueprint既然是DI规范,自然在注入方面有很多的需求。在前几篇中,我们已接触了服务引用的注入:

 
  
  
  
  
  1. <reference id="coderService" interface="com.ponder.ICoder" timeout="0"/> 
  2. <bean id="processor" class="com.ponder.Processor">  
  3. <property name="coder" ref="coderService"/>  
  4. </bean> 
 
    上例中,reference节点定义了对一个OSGI服务的引用,然后在bean节点内用property子节点将该服务引用注入bean中,注入是blueprint通过bean的setCoder(com.ponder.ICoder)这个setter方法实现的。
 
注入基础类型的常量:
 
 
  
  
  
  
  1. <bean id="processor" class="com.ponder.Processor">  
  2. <property name="price" value="19.99"/>  
  3. </bean> 
 
    上例将19.99这个值注入bean中,用的是setPrice这个setter方法,那么它注入的是数值19.99还是字符串“19.99”呢?这个就要看setter方法的参数类型了,这个你懂的... ...。
 
注入非基础类型的常量:
 
  
  
  
  
  1. <bean id="processor" class="com.ponder.Processor"> 
  2. <!-- boolean --> 
  3. <property name="boolvar"> 
  4. <value type="java.lang.boolean">true</value> 
  5. </property>  
  6. <!-- BigInteger --> 
  7. <property name="bigIntVar"> 
  8. <value type="java.lang.BigInteger">823899238</value> 
  9. </property> 
  10. </bean> 
 
bean的注入:
 
 
  
  
  
  
  1. <!-- 待注入的bean1 --> 
  2. <bean id="bean1" class="com.ponder.bean1"/> 
  3.  
  4. <!-- 注入bean1的bean(processor) --> 
  5. <bean id="processor" class="com.ponder.Processor"> 
  6. <property name="mybean" ref="bean1"/> 
  7. </property> 
  8. </bean> 
 
集合的注入:
 
  
  
  
  
  1. <bean id="processor" class="com.ponder.Processor"> 
  2. <!--数组 --> 
  3. <property name="arrayvar"> 
  4. <array value-type="java.lang.String"> 
  5.   <value>hello</value> 
  6.   <value>world</value> 
  7.   <value>!</value> 
  8. </array> 
  9. </property> 
  10. <!-- list --> 
  11. <property name="listvar"> 
  12. <list value-type="java.lang.String"> 
  13.   <value>hello</value> 
  14.   <value>world</value> 
  15.   <value>!</value> 
  16. </list> 
  17. <!-- set --> 
  18. <property name="setvar"> 
  19. <set value-type="java.lang.String"> 
  20.   <value>hello</value> 
  21.   <value>world</value> 
  22.   <value>!</value> 
  23. </set> 
  24. </property> 
  25. </bean> 
 
properties的注入:
 
  
  
  
  
  1. <bean id="processor" class="com.ponder.Processor"> 
  2. <property name="propsvar"> 
  3. <props> 
  4.   <prop key="hello">hello</prop> 
  5.   <prop key="world" value="world" /> 
  6. </props> 
  7. </property> 
  8. </bean>  

MAP的注入:
 
  
  
  
  
  1. <bean id="processor" class="com.ponder.Processor"> 
  2. <property name="mapvar"> 
  3. <map>   
  4.   <!-- 普通 --> 
  5.   <entry key="hello" value="world" /> 
  6.   <!-- 对象引用作为键 --> 
  7.   <entry key-ref="obj-ref" value="value1"/> 
  8.   <!-- 对象引用作为值 --> 
  9.   <entry key="key1" value-ref="value-ref"/>  
  10.   <!-- 键和值都是引用 --> 
  11.   <entry key-ref="obj-ref" value-ref="value-ref"/>   
  12.   <!-- 非基础类型的值 --> 
  13.   <entry key="key2"> 
  14.   <value type="java.lang.BigInteger">92873873242323</value> 
  15.   </entry> 
  16.   <!-- 非基础类型的键 --> 
  17.   <entry value="value2"> 
  18.   <key type="java.lang.BigInteger">92873873242323</value> 
  19.   </entry> 
  20.    <!-- 键和值都非基础类型 --> 
  21.    <entry> 
  22.         <key type="java.lang.Long">2323</value> 
  23.         <value type="java.util.List"> 
  24.             <list value-type="java.lang.String"> 
  25.              <value>hello</value> 
  26.              <value>world</value> 
  27.              <value>!</value> 
  28.            </list> 
  29.         </value> 
  30.    </entry> 
  31. </map> 
  32. </property> 
  33. </bean> 
Blueprint运行时环境上下文的注入:
 
  
  
  
  
  1. <bean id="processor" class="com.ponder.Processor"> 
  2. <!-- BundleContext --> 
  3. <property name="bundlecontext" ref="blueprintBundleContext"/> 
  4. <!-- Bundle --> 
  5. <property name="bundle" ref="blueprintBundle"/> 
  6. <!--  blueprint容器--> 
  7. <property name="container" ref="blueprintBundleContainer"/> 
  8. <!-- 类型转换器 --> 
  9. <property name="converter" ref="blueprintBundleConverter"/> 
  10. </bean> 
 

你可能感兴趣的:(java,DI,IOC,osgi,blueprint)