`
killko
  • 浏览: 105065 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Group-logo
Servicemix&Fu...
浏览量:0
社区版块
存档分类
最新评论
阅读更多
    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>
1
1
分享到:
评论

相关推荐

    osgi gemini blueprint环境

    标题中的“osgi gemini blueprint环境”指的是OSGi(Open Services Gateway Initiative)框架下的Gemini Blueprint服务。OSGi是一个模块化系统,它允许Java应用程序被分解为一系列可独立部署的模块,增强了软件的可...

    Spring OSGI 快速入门中文教程

    - **Blueprint** 和 **Declarative Services** 是两种常见的Spring OSGi服务配置方式,它们都允许在OSGi中声明性地定义Bean和服务。 3. **Spring OSGi的应用场景** - **动态性**:OSGi环境下的Spring应用能更好地...

    OSGI资料,OSGI进阶,OSGI实战,OSGI入门和整合Spring

    3. **Blueprint**:Spring的OSGI扩展,提供类似Spring XML配置的模块化服务定义方式。 4. **Aries SPI Fly**:一种用于将Spring应用转换为OSGI bundle的工具,保持原有Spring配置不变。 《OSGI_Opendoc.rar》可能...

    OSGI入门和整合Spring

    5. **使用Blueprint或PAX Wiring**:这两个是OSGI的XML配置模型,它们提供了在OSGI环境中声明和管理依赖的方式,可以方便地与Spring配置结合使用。 6. **打包和部署**:将所有bundle打包成jar文件,并部署到支持...

    spring-osgi 入门手册和代码

    Spring OSGi 是一个将 Spring 框架与 OSGi(Open Service Gateway Initiative)容器相结合的开源项目,旨在提供一种在 ...提供的压缩包文件可能包含了入门手册和示例代码,这些资源将有助于你快速上手 Spring OSGi。

    OSGi 入门+进阶+实战

    5. **Blueprint或Declarative Services**:这两种是OSGi中的服务配置方式,Blueprint更接近XML,而Declarative Services使用注解,简化了服务的声明和管理。 6. **远程服务**:OSGi Remote Services允许Bundle之间...

    Spring OSGi 入门.pdf

    **Spring OSGi 入门** Spring OSGi 是 Spring 框架与开放服务网关规范(OSGi)的结合,它为基于 Java 的应用程序提供了模块化开发的能力。OSGi 是一个动态的、模块化的运行时环境,使得开发者可以创建可热插拔的...

    精彩:OSGI入门以及提升

    相关技术文章可能深入探讨了OSGI的高级特性,例如: Blueprint Container用于在OSGI环境中实现依赖注入,它简化了服务的创建和管理;felix-configadmin服务允许动态配置bundle;还有OSGI的远程服务(Remote Services...

    OSGISpring OSGISpring

    7. **Blueprint服务**:OSGI的Blueprint规范提供了一种在OSGI环境中声明式地定义服务和依赖的XML格式,与Spring的XML配置类似,但更适合OSGI环境。 8. **冲突管理**:在OSGI环境中,多个bundle可能提供相同的服务,...

    tomcat-osgi压缩包

    在提供的压缩包文件名称“Tomcat-OSGi-QuickStart”中,"QuickStart"通常表示这是一个快速入门或示例项目,帮助用户快速理解和实践如何在Tomcat中配置和使用OSGi。这个压缩包可能包含了预配置的Tomcat服务器,示例...

    osgi相关文档、及学习资料

    可能会包括如何创建和打包OSGi Bundle、配置Manifest文件(包含Bundle的元数据)、使用Blueprint或Declarative Services进行服务声明、理解OSGi的生命周期管理以及如何在实际项目中应用OSGi技术。 **OSGi原理与最佳...

    karaf 手册和入门资料

    ### Karaf 手册与入门指南 ...通过上述介绍,我们可以看到 Karaf 作为一个轻量级的 OSGi 运行时,不仅具备了丰富的功能和灵活性,还为开发者提供了强大而方便的工具集,使其成为构建复杂应用的理想平台之一。

    spring-dm-reference

    - **OSGi 4.2 Blueprint Reference Implementation (RI)**: 实现了最新的 OSGi Blueprint 规范。 - **Java 5**: 兼容 Java 5 及以上版本。 - **Spring 3.x**: 兼容 Spring 3.x 版本。 - **服务导入改进**: 增强了...

    快速入门指南 中文版 ServiceMix4

    输出包括bundle的ID、状态、Blueprint或Spring XML文件的bean创建情况、启动级别以及名称和版本。通过管道和命令行工具,可以方便地搜索特定的bundle,例如查找与"Camel"相关的bundle。 4. **使用Apache ServiceMix...

    CAMEL核心开发指南

    - **Apache Karaf**:这是一个小型的基于OSGi的运行时环境,允许部署应用程序。 - **Apache MINA**:这是一个高性能的、基于NIO的网络框架。 4. **集成模式**: CAMEL支持多种集成模式,这些模式定义了企业应用...

    camel-manual-2.10.4.pdf

    - Apache Karaf:一个小型的基于OSGi的运行时环境,其中可以部署容器代理的应用程序。 - Apache MINA:一个高性能的NIO驱动的网络框架。 Camel的核心概念在于它的集成模式,它们是一种设计模式,可以用来指导集成...

Global site tag (gtag.js) - Google Analytics