Blueprint既然是DI规范,自然在注入方面有很多的需求。在前几篇中,我们已接触了服务引用的注入:
<reference id="coderService" interface="com.ponder.ICoder" timeout="0"/>
<bean id="processor" class="com.ponder.Processor">
<property name="coder" ref="coderService"/>
</bean>
上例中,reference节点定义了对一个OSGI服务的引用,然后在bean节点内用property子节点将该服务引用注入bean中,注入是blueprint通过bean的setCoder(com.ponder.ICoder)这个setter方法实现的。
注入基础类型的常量:
<bean id="processor" class="com.ponder.Processor">
<property name="price" value="19.99"/>
</bean>
上例将19.99这个值注入bean中,用的是setPrice这个setter方法,那么它注入的是数值19.99还是字符串“19.99”呢?这个就要看setter方法的参数类型了,这个你懂的... ...。
注入非基础类型的常量:
<bean id="processor" class="com.ponder.Processor">
<!-- boolean -->
<property name="boolvar">
<value type="java.lang.boolean">true</value>
</property>
<!-- BigInteger -->
<property name="bigIntVar">
<value type="java.lang.BigInteger">823899238</value>
</property>
</bean>
bean的注入:
<!-- 待注入的bean1 -->
<bean id="bean1" class="com.ponder.bean1"/>
<!-- 注入bean1的bean(processor) -->
<bean id="processor" class="com.ponder.Processor">
<property name="mybean" ref="bean1"/>
</property>
</bean>
集合的注入:
<bean id="processor" class="com.ponder.Processor">
<!--数组 -->
<property name="arrayvar">
<array value-type="java.lang.String">
<value>hello</value>
<value>world</value>
<value>!</value>
</array>
</property>
<!-- list -->
<property name="listvar">
<list value-type="java.lang.String">
<value>hello</value>
<value>world</value>
<value>!</value>
</list>
<!-- set -->
<property name="setvar">
<set value-type="java.lang.String">
<value>hello</value>
<value>world</value>
<value>!</value>
</set>
</property>
</bean>
properties的注入:
<bean id="processor" class="com.ponder.Processor">
<property name="propsvar">
<props>
<prop key="hello">hello</prop>
<prop key="world" value="world" />
</props>
</property>
</bean>
MAP的注入:
<bean id="processor" class="com.ponder.Processor">
<property name="mapvar">
<map>
<!-- 普通 -->
<entry key="hello" value="world" />
<!-- 对象引用作为键 -->
<entry key-ref="obj-ref" value="value1"/>
<!-- 对象引用作为值 -->
<entry key="key1" value-ref="value-ref"/>
<!-- 键和值都是引用 -->
<entry key-ref="obj-ref" value-ref="value-ref"/>
<!-- 非基础类型的值 -->
<entry key="key2">
<value type="java.lang.BigInteger">92873873242323</value>
</entry>
<!-- 非基础类型的键 -->
<entry value="value2">
<key type="java.lang.BigInteger">92873873242323</value>
</entry>
<!-- 键和值都非基础类型 -->
<entry>
<key type="java.lang.Long">2323</value>
<value type="java.util.List">
<list value-type="java.lang.String">
<value>hello</value>
<value>world</value>
<value>!</value>
</list>
</value>
</entry>
</map>
</property>
</bean>
Blueprint运行时环境上下文的注入:
<bean id="processor" class="com.ponder.Processor">
<!-- BundleContext -->
<property name="bundlecontext" ref="blueprintBundleContext"/>
<!-- Bundle -->
<property name="bundle" ref="blueprintBundle"/>
<!-- blueprint容器-->
<property name="container" ref="blueprintBundleContainer"/>
<!-- 类型转换器 -->
<property name="converter" ref="blueprintBundleConverter"/>
</bean>
分享到:
相关推荐
OSGi的入门资料,网上找的,初探OSGi 的全文
OSGi的入门教程,帮助初学者快速了解OSGi的定义、用途及组成。
强大的OSGI框架入门和例子,看看eclipse就知道OSGI有多强大了。希望对大家有用!
OSGI 入门资料PDF,包括OSGI实战、OSGI进阶、OSGI 入门和整合Spring、OSGI原理与最佳实践
osgi-blueprint-helloworld 概述 一个使用OSGI蓝图容器规范的非常简单的HelloWorld示例。 想要查询更多的信息: osgi-blueprint-helloworld-api 应用程序API osgi-blueprint-helloworld-server 发布服务以供...
Spring OSGI 快速入门中文教程
NULL 博文链接:https://conkeyn.iteye.com/blog/2113824
OSGI简单入门.doc
osgi webservice入门
OSGI入门和整合Spring OSGI入门和整合Spring
spring-osgi 入门手册和代码 spring-osgi 入门手册和代码 spring-osgi 入门手册和代码 spring-osgi 入门手册和代码
总结了osgi服务发布和获取的多种方式。
Spring OSGi 入门.pdf Spring OSGi 入门.pdf
OSGI入门和整合Spring + OSGI进阶 + OSGI实战
OSGi 入门级教程OSGi 入门级教程OSGi 入门级教程OSGi 入门级教程中文版
blueprint-osgi-bundle
关于SOA中热门技术OSGI的入门样例的经典版本,供对需要进行ERP设计和学习的入门读者使用的经典
资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...
OSGI进阶.pdf,OSGI实战.pdf,OSGI入门和整合Spring.pdf