OSGi和Spring入门:什么是Spring动态模型(Spring DM)?
2010-05-31 17:46
190 查看
【51CTO精选译文】本文是《你好,OSGi
》系列的第
五部分。从本篇开始将讲述Spring动态模型。我们将一起来发现,为什么Spring动态模型对于开发者是一个如此令人兴奋的选择。这些开发者已经对
Spring配置非常熟悉,并需要挖掘OSGi的模块性、简易的版本控制以及应用程序生命周期支持。
51CTO编辑推荐:
OSGi入门与实践全攻略
使用OSGi和Spring构建面向服务的应用程序
OSGi,也称为 Java
语言动态模块系统
,它为 Java
应用程序开发指定了一种模块方法,以及一组标准化的模块,用于管理模块之间的从属性。OSGi服务平台的Spring动态模型项目(即
Spring动态模型,简称Spring DM
)允许开发者构建Spring应用程序,这种应用程序能够在OSGi容器中进行部署。对于熟悉
Spring编程和配置模型的 Java
企业开发者,Spring动态模型是一种较为简易的方式,可用来熟悉OSGi的应用程序开发的模块化方法。除了允许Spring开发者进行OSGi的模块
化架构和动态配置之外,Spring动态模型还提供了多数OSGi应用程序所需的低阶编程,因此你能够将重点放在应用程序的业务逻辑上。
在该系列文章的第一节中(《你好,OSGi,第一
节:Bundles 入门
》),我们介绍了一种OSGi开发的标准方式,使用了OSGiAPI 和开源的 Equinox
容器实施。你已经学习了有关OSGi架构的知识,尤其是容器和套件(bundle),并且第一次开发了一个基于OSGi的 Hello World
应用程序。由于这个示例的目标仅仅是为了理解OSGi的基础功能,因此该应用程序示例并不是很深入。
在本节中,你将再次构建一个 Hello World
应
用程序,这次将使用Spring动态模型框架。你将会学到什么是Spring
DM以及它在模块中利用OSGi应用程序逻辑的分离性,以及其模块边界的运行时强制执行。此外,你还会学习如何使用Spring动态模型完成以下事项:
在正在运行的系统中,动态安装,升级以及卸载模块。
通过动态地发现和使用系统中其他模块提供的服务,构建面向服务的应用程序(SOA)。
使用Spring的 DataSource
类对系统模块之间以及跨越系统模块的组件进行实例化、配置、组装(assemble)以及添加装饰性功能。
你将看到,使用Spring动态模型可以让你免除某些死板的机械工作,以及更为困难的工作:理解OSGi框架之下发生了什么。因此,你将能够深入挖
掘应用程序逻辑,并在开发流程中更快地完成这种挖掘。
为了理解本节中的示例,你需要一个包含 Eclipse 3.3 和Spring动态模型的开发环境。
OSGi和Spring框架
目前OSGi的流行程度增加急速上升。某些应用程序服务器已经记过重新装备以利用OSGi的模块化框架,其中包括 IBM 的 WebSphere
应用程序服务器、BEA 的 microService 架构(mSA),以及JOnAS
5,一个开源的应用程序服务器,该服务器在OSGi的架构之上从基础进行构建。JBoss
也在开发基于OSGi的类加载程序(classloader)并计划参加一个OSGi核心规则实施。也许最重要的是,Eclipse
基金会(Eclipse Foundation)的OSGi容器/运行时组件引擎 Equinox
最近已经升级为顶级的项目状态,在这种状态下,它将被用作新的 Eclipse 运行时规范(Eclipse Runtime
Initiative)的基础。
甚至在OSGi当前的流行度激增之前,已经存在将其与Spring组合中一起的讨论,这一讨论带来了OSGi服务平台的Spring动态模型
(SpringDynamic Modules forOSGiService Platforms
)项目。Spring动态模型的功能可以划分为两个主要部分:第一个功能是它以OSGi套件(bundle)的形式提供Spring框架
JAR。从上一章节中你已经了解到,OSGi套件不过是 Java Achive(JAR)文件,这些文件在一个
META-INF/MANIFEST.MF
文件中包含了额外的条目,它可以作为OSGi套件的部署描述器(descriptor)。(请注意,在使用OSGi时,你不能够直接部署 JAR
文件;你需要使用OSGi套件格式对其进行装配。)
第二个功能,Spring DM提供了三个OSGi专用的Spring套件/JAR:
1. org.springframeork.osgi.bundle.extender
2. org.springframeork.osgi.bundle.core
3. org.springframeork.osgi.bundle.io
使用Spring动态模型构建的应用程序,其构建方式不同于那些使用Spring框架的应用程序。当构建一个Spring应用程序时,你在一个或多
个Spring配置文件中定义了配置信息,这种配置文件绝大多数为 XML
文件。在应用程序启动时,Spring框架使用这些配置文件创建应用程序语境(application-context)对象。当应用程序语境创建之后,
它将用于对该应用程序中的对象进行实例化、配置、组装(assemble)以及添加装饰性功能。
对于Spring动态模型,在启动时,org.springframeork.osgi.bundle.extender
查询所有处于解析(resolved)状态以了解它们是否由Spring提供(Springpowered)。如果套件具有Spring-Context
清单头(manifest header),或者在其 META-INF/spring 文件夹中包含 XML 文件,extender
套件将认为该套件是由Spring提供的。
当找到Spring提供的套件时,org.springframeork.osgi.bundle.extender
将在该套件中加载Spring配置文件,以并它创建一个应用程序-语境对象。在创建应用程序-语境对象时,该 extender
还会检查该套件是否正在输出OSGi服务。如果是,它将输出该Springbean
到OSGi共享服务寄存器(registry)。如果套件正在导入OSGi服务,它将找到该服务并将其作为该 bean
的应用程序语境中的正常Springbean 进行添加。该 extender
还为套件事件注册了一个监听器,这样,无论任何OSGi套件是否进入解析状态,它都将检查它是否由Spring提供并遵循相同的步骤。
在接下来的文章中,你将从设置相关环境开始,开发出你的第一个Spring动态模型应用程序,在这一过程中,上述问题都将变得明朗清晰。敬请期待!
》系列的第
五部分。从本篇开始将讲述Spring动态模型。我们将一起来发现,为什么Spring动态模型对于开发者是一个如此令人兴奋的选择。这些开发者已经对
Spring配置非常熟悉,并需要挖掘OSGi的模块性、简易的版本控制以及应用程序生命周期支持。
51CTO编辑推荐:
OSGi入门与实践全攻略
使用OSGi和Spring构建面向服务的应用程序
OSGi,也称为 Java
语言动态模块系统
,它为 Java
应用程序开发指定了一种模块方法,以及一组标准化的模块,用于管理模块之间的从属性。OSGi服务平台的Spring动态模型项目(即
Spring动态模型,简称Spring DM
)允许开发者构建Spring应用程序,这种应用程序能够在OSGi容器中进行部署。对于熟悉
Spring编程和配置模型的 Java
企业开发者,Spring动态模型是一种较为简易的方式,可用来熟悉OSGi的应用程序开发的模块化方法。除了允许Spring开发者进行OSGi的模块
化架构和动态配置之外,Spring动态模型还提供了多数OSGi应用程序所需的低阶编程,因此你能够将重点放在应用程序的业务逻辑上。
在该系列文章的第一节中(《你好,OSGi,第一
节:Bundles 入门
》),我们介绍了一种OSGi开发的标准方式,使用了OSGiAPI 和开源的 Equinox
容器实施。你已经学习了有关OSGi架构的知识,尤其是容器和套件(bundle),并且第一次开发了一个基于OSGi的 Hello World
应用程序。由于这个示例的目标仅仅是为了理解OSGi的基础功能,因此该应用程序示例并不是很深入。
在本节中,你将再次构建一个 Hello World
应
用程序,这次将使用Spring动态模型框架。你将会学到什么是Spring
DM以及它在模块中利用OSGi应用程序逻辑的分离性,以及其模块边界的运行时强制执行。此外,你还会学习如何使用Spring动态模型完成以下事项:
在正在运行的系统中,动态安装,升级以及卸载模块。
通过动态地发现和使用系统中其他模块提供的服务,构建面向服务的应用程序(SOA)。
使用Spring的 DataSource
类对系统模块之间以及跨越系统模块的组件进行实例化、配置、组装(assemble)以及添加装饰性功能。
你将看到,使用Spring动态模型可以让你免除某些死板的机械工作,以及更为困难的工作:理解OSGi框架之下发生了什么。因此,你将能够深入挖
掘应用程序逻辑,并在开发流程中更快地完成这种挖掘。
为了理解本节中的示例,你需要一个包含 Eclipse 3.3 和Spring动态模型的开发环境。
OSGi和Spring框架
目前OSGi的流行程度增加急速上升。某些应用程序服务器已经记过重新装备以利用OSGi的模块化框架,其中包括 IBM 的 WebSphere
应用程序服务器、BEA 的 microService 架构(mSA),以及JOnAS
5,一个开源的应用程序服务器,该服务器在OSGi的架构之上从基础进行构建。JBoss
也在开发基于OSGi的类加载程序(classloader)并计划参加一个OSGi核心规则实施。也许最重要的是,Eclipse
基金会(Eclipse Foundation)的OSGi容器/运行时组件引擎 Equinox
最近已经升级为顶级的项目状态,在这种状态下,它将被用作新的 Eclipse 运行时规范(Eclipse Runtime
Initiative)的基础。
甚至在OSGi当前的流行度激增之前,已经存在将其与Spring组合中一起的讨论,这一讨论带来了OSGi服务平台的Spring动态模型
(SpringDynamic Modules forOSGiService Platforms
)项目。Spring动态模型的功能可以划分为两个主要部分:第一个功能是它以OSGi套件(bundle)的形式提供Spring框架
JAR。从上一章节中你已经了解到,OSGi套件不过是 Java Achive(JAR)文件,这些文件在一个
META-INF/MANIFEST.MF
文件中包含了额外的条目,它可以作为OSGi套件的部署描述器(descriptor)。(请注意,在使用OSGi时,你不能够直接部署 JAR
文件;你需要使用OSGi套件格式对其进行装配。)
第二个功能,Spring DM提供了三个OSGi专用的Spring套件/JAR:
1. org.springframeork.osgi.bundle.extender
2. org.springframeork.osgi.bundle.core
3. org.springframeork.osgi.bundle.io
使用Spring动态模型构建的应用程序,其构建方式不同于那些使用Spring框架的应用程序。当构建一个Spring应用程序时,你在一个或多
个Spring配置文件中定义了配置信息,这种配置文件绝大多数为 XML
文件。在应用程序启动时,Spring框架使用这些配置文件创建应用程序语境(application-context)对象。当应用程序语境创建之后,
它将用于对该应用程序中的对象进行实例化、配置、组装(assemble)以及添加装饰性功能。
对于Spring动态模型,在启动时,org.springframeork.osgi.bundle.extender
查询所有处于解析(resolved)状态以了解它们是否由Spring提供(Springpowered)。如果套件具有Spring-Context
清单头(manifest header),或者在其 META-INF/spring 文件夹中包含 XML 文件,extender
套件将认为该套件是由Spring提供的。
当找到Spring提供的套件时,org.springframeork.osgi.bundle.extender
将在该套件中加载Spring配置文件,以并它创建一个应用程序-语境对象。在创建应用程序-语境对象时,该 extender
还会检查该套件是否正在输出OSGi服务。如果是,它将输出该Springbean
到OSGi共享服务寄存器(registry)。如果套件正在导入OSGi服务,它将找到该服务并将其作为该 bean
的应用程序语境中的正常Springbean 进行添加。该 extender
还为套件事件注册了一个监听器,这样,无论任何OSGi套件是否进入解析状态,它都将检查它是否由Spring提供并遵循相同的步骤。
在接下来的文章中,你将从设置相关环境开始,开发出你的第一个Spring动态模型应用程序,在这一过程中,上述问题都将变得明朗清晰。敬请期待!
相关文章推荐
- OSGi和Spring入门:什么是Spring动态模型(Spring DM)?
- OSGi和Spring入门:什么是Spring动态模型(Spring DM)?
- OSGi入门必读系列《OSGi和Spring入门:什么是Spring动态模型(Spring DM)》
- OSGi入门必读系列之《OSGi是什么:Java语言的动态模块系统》
- 基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。
- OSGi是什么:Java语言的动态模块系统
- Spring 入门, Spring 是什么,好处,体系结构
- OSGI(面向Java的动态模型系统)
- JDK动态代理干了什么事情?为什么我的事务会不起效?spring的事务到底应该怎么使用?原理是什么?
- OSGI 面向Java的动态模型系统
- hibernate动态模型在web中使用 与spring集成一起
- Spring OSGI 快速入门中文教程
- Cg入门19:Fragment shader - 片段级模型动态变色
- spring-aop入门之动态代理模式
- Spring学习-- AOP入门动态代理
- Spring入门4 静态代理 动态代理 CGLIB AOP切入点切面 AOP注解
- Spring入门 静态代理 动态代理 CGLIB AOP切入点切面 AOP注解
- OSGi是什么:Java语言的动态模块系统
- OSGI(面向Java的动态模型系统)
- SpringBoot入门-21(springboot集成mybatis注解形式增删查改properties配置,利用@Provider实现动态SQL)