OGI 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ノードは一つのOGIサービスに対する参照を定義し、その後、beanノード内でpropertyサブノードでこのサービスをbeanに注入し、注入はblueprintがbeanのset Coder(comp.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> 
 
ベーンの注入:
 
 

  
  
  
  
  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>