<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/626304104c65f412598dfcde/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/626304104c65f412598dfcde/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">Spring <span class="_"> </span><span class="ff2 sc1 ls1">动态模型(</span><span class="ls2 ws1">Spring Dynamic </span></div><div class="t m0 x2 h2 y2 ff1 fs0 fc0 sc0 ls2 ws0">Modules<span class="ff2 sc1 ls1">)参考指南</span><span class="ls3"> </span></div><div class="t m0 x3 h3 y3 ff3 fs1 fc0 sc0 ls4 ws0">1.0.1 </div><div class="t m0 x4 h4 y4 ff4 fs2 fc0 sc0 ls5 ws2">Adrian M Colyer (SpringSource), Hal <span class="ls6 ws3">Hildebrand (Oracle), Costin Leau </span></div><div class="t m0 x5 h4 y5 ff4 fs2 fc0 sc0 ls3 ws4">(SpringSource), Andy </div><div class="t m0 x6 h4 y6 ff4 fs2 fc0 sc0 ls7 ws5">Piper (BEA) </div><div class="t m0 x7 h4 y7 ff4 fs2 fc0 sc0 ls8 ws6">Copyright © 2006-2008 </div><div class="t m0 x8 h5 y8 ff2 fs2 fc0 sc0 ls3 ws0">若不作商业用途,<span class="_ _0"></span>且保证无论是印刷版还是电子版的所有副本中均包含此版</div><div class="t m0 x9 h4 y9 ff2 fs2 fc0 sc0 ls3 ws0">权说明,则本文的副本可供个人或分发给他人使用。<span class="ff4"> </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/626304104c65f412598dfcde/bg2.jpg"><div class="t m0 xa h6 ya ff5 fs3 fc0 sc1 ls9 ws0">译者前言<span class="ff6 sc0 ls3"> </span></div><div class="t m0 xb h7 yb ff7 fs2 fc0 sc0 ls3 ws0">国际歌 </div><div class="t m0 xc h7 yc ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>(法)鲍狄埃词 </div><div class="t m0 xc h7 yd ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>(法)狄盖特曲 </div><div class="t m0 xc h7 ye ff7 fs2 fc0 sc0 ls3 ws0"> </div><div class="t m0 xc h7 yf ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>起来饥寒交迫的奴隶 </div><div class="t m0 xc h7 y10 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>起来全世界受苦的人 </div><div class="t m0 xc h7 y11 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>满腔的热血已经沸腾要为真理而斗争 </div><div class="t m0 xc h7 y12 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>旧世界打个落花流水奴隶们起来起来 </div><div class="t m0 xc h7 y13 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>不要说我们一无所有我们要做天下的主人 </div><div class="t m0 xc h7 y14 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>这是最后的斗争团结起来到明天 </div><div class="t m0 xc h7 y15 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>英特纳雄耐尔就一定要实现 </div><div class="t m0 xc h7 y16 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>这是最后的斗争团结起来到明天 </div><div class="t m0 xc h7 y17 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>英特纳雄耐尔就一定要实现 </div><div class="t m0 xc h7 y18 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>从来就没有什么救世主也不靠神仙皇帝 </div><div class="t m0 xc h7 y19 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>要创造人类的幸福全靠我们自己 </div><div class="t m0 xc h7 y1a ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>我们要夺回劳动果实让思想冲破牢笼 </div><div class="t m0 xc h7 y1b ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>快把那炉火烧得通红趁热打铁才能成功 </div><div class="t m0 xc h7 y1c ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>这是最后的斗争团结起来到明天 </div><div class="t m0 xc h7 y1d ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>英特纳雄耐尔就一定要实现 </div><div class="t m0 xc h7 y1e ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>这是最后的斗争团结起来到明天 </div><div class="t m0 xc h7 y1f ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>英特纳雄耐尔就一定要实现 </div><div class="t m0 xc h7 y20 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>是谁创造了人类世界是我们劳动群众 </div><div class="t m0 xc h7 y21 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>一切归劳动者所有哪能容得寄生虫 </div><div class="t m0 xc h7 y22 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>最可恨那些毒蛇猛兽吃尽了我们的血肉 </div><div class="t m0 xc h7 y23 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>一旦把他们消灭干净鲜红的太阳照遍全球 </div><div class="t m0 xc h7 y24 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>这是最后的斗争团结起来到明天 </div><div class="t m0 xc h7 y25 ff7 fs2 fc0 sc0 ls3 ws0"> <span class="_"> </span> <span class="_"> </span>英特纳雄耐尔就一定要实现 </div><div class="t m0 x8 h7 y26 ff7 fs2 fc0 sc0 ls3 ws0">这是最后的斗争团结起来到明天 </div><div class="t m0 xd h4 y27 ff2 fs2 fc0 sc0 ls3 ws0">水平有限,精力有限,望不吝指教,共同完善之。<span class="ff4"> </span></div><div class="t m0 x8 h4 y28 ff4 fs2 fc0 sc0 ls3 ws0"> </div><div class="t m0 x2 h4 y29 ff2 fs2 fc0 sc0 ls3 ws0">翻译:蔡超伟<span class="ff4"> <span class="_ _1"> </span></span>:<span class="ff4 fc1 lsa">caichaowei@gmail.com</span></div><div class="t m0 xe h4 y2a ff4 fs2 fc0 sc0 lsb ws0">2008<span class="_ _2"> </span><span class="ff2 ls3">年<span class="_ _2"> </span><span class="ff4">4<span class="_ _2"> </span></span>月<span class="ff4"> </span></span></div><div class="t m0 xf h4 y2b ff4 fs2 fc0 sc0 ls3 ws0"> </div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/626304104c65f412598dfcde/bg3.jpg"><div class="t m0 x3 h6 y2c ff5 fs3 fc0 sc1 lsc ws0">前言<span class="ff6 sc0 ls3"> </span></div><div class="t m0 x10 h8 y2d ff2 fs4 fc0 sc0 ls3 ws0">近年来应用程序开发的发展变化显著:<span class="_ _3"></span>更简洁、<span class="_ _3"></span>更轻便和基于<span class="_ _1"> </span><span class="ff3 lsd">POJO<span class="_ _3"></span><span class="ff2 ls3">(译者注:<span class="_ _3"></span><span class="ff3 lse ws7">Plain Old </span></span></span></div><div class="t m0 xc h8 y2e ff3 fs4 fc0 sc0 lsf ws8">Java Object<span class="_"> </span><span class="ff2 ls3 ws0">的缩写)<span class="_ _4"></span>的编程模式——这些发展都是为了保持较快的开发速度。<span class="_ _4"></span>依赖注入和面</span></div><div class="t m0 xc h9 y2f ff2 fs4 fc0 sc0 ls3 ws0">向方面编程,<span class="_ _0"></span>这些新生的活跃而具争议的想法被大多数开发者日常用于管理和简化他们的应</div><div class="t m0 xc h8 y30 ff2 fs4 fc0 sc0 ls3 ws0">用程序的复杂性。<span class="ff3"> </span></div><div class="t m0 x10 h9 y31 ff2 fs4 fc0 sc0 ls3 ws0">然而在应用程序部署方面,<span class="_ _5"></span>情况并无长足进展。<span class="_ _5"></span>尽管代码被分成一个个的模块,<span class="_ _5"></span>但无论</div><div class="t m0 xc h9 y32 ff2 fs4 fc0 sc0 ls3 ws0">从逻辑上、<span class="_ _5"></span>概念上还是物理上,<span class="_ _5"></span>在运行时看来它们是一个单块集成电路般的应用程序,<span class="_ _5"></span>进行</div><div class="t m0 xc h8 y33 ff2 fs4 fc0 sc0 ls3 ws0">任何改动(或大或小)都需要重启。<span class="ff3 ls10">OSGi<span class="_ _2"> </span></span>的目标就是通过拆分应用程序改变这种状况——</div><div class="t m0 xc h9 y34 ff2 fs4 fc0 sc0 ls3 ws0">它允许应用程序被分成若干个独立模块,<span class="_ _3"></span>这些模块具有不同的生命周期、<span class="_ _3"></span>依赖性却一如既往</div><div class="t m0 xc h8 y35 ff2 fs4 fc0 sc0 ls3 ws0">地严丝合缝。<span class="ff3 ls11"> </span></div><div class="t m0 x10 h8 y36 ff3 fs4 fc0 sc0 ls12 ws9">Spring Dynamic Mod<span class="_ _6"></span>ules<span class="_"> </span><span class="ff2 ls3 ws0">致力于整合<span class="_ _1"> </span><span class="ff3 ls13">Spring<span class="_"> </span></span>框架和<span class="_ _1"> </span><span class="ff3 ls10">OSGi<span class="_"> </span></span>平台:前者有强大、低依赖性</span></div><div class="t m0 xc h8 y37 ff2 fs4 fc0 sc0 ls3 ws0">编程模型和概念,<span class="_ _7"></span>后者具有动态性、<span class="_ _7"></span>模块性,<span class="_ _7"></span><span class="ff3 ls14">Spring-DM<span class="_"> </span><span class="ff2 ls3">集两家之长,<span class="_ _7"></span>它允许透明地导出和</span></span></div><div class="t m0 xc h8 y38 ff2 fs4 fc0 sc0 ls3 ws0">导入<span class="_ _1"> </span><span class="ff3 ls10">OSGi<span class="_"> </span></span>服务、进行生命周期管理和控制。<span class="ff3"> </span></div><div class="t m0 x10 h9 y39 ff2 fs4 fc0 sc0 ls3 ws0">尽管我们尽力想保证这份文档的可读性和准确性,然而某些主题可能需要更多的解释、</div><div class="t m0 xc h9 y3a ff2 fs4 fc0 sc0 ls3 ws0">一些笔误可能不经意地发生。<span class="_ _3"></span>如果您发现任何问题或者严重错误,<span class="_ _3"></span>您不妨抽个小空把问题提</div><div class="t m0 xc h8 y3b ff2 fs4 fc0 sc0 ls3 ws0">交到<span class="_ _1"> </span><span class="ff3 ls15 wsa">Spring Dyna<span class="_ _8"></span>mic Modules<span class="_ _1"> </span></span>开发组,不胜感激。<span class="ff3"> </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/626304104c65f412598dfcde/bg4.jpg"><div class="t m0 x10 h8 y3c ff3 fs4 fc0 sc0 ls3 ws0"> </div><div class="t m0 x11 h6 y3d ff5 fs3 fc0 sc1 ls3 ws0">第<span class="ff6 sc0">1</span><span class="lsc">部分</span><span class="ff2"> <span class="_ _9"></span><span class="ff5 lsc">绪论<span class="ff6 sc0 ls3"> </span></span></span></div><div class="t m0 x10 h8 y3e ff2 fs4 fc0 sc0 ls3 ws0">此文档是<span class="ff3 ls12 wsb">Spring Dynamic Mod<span class="_ _6"></span>ules<span class="ff2 ls3 ws0">的参考文档,<span class="_ _5"></span>它定义了<span class="ff3 ls16 wsc">Spring Dynamic Modules</span>的概念</span></span></div><div class="t m0 xc h8 y3f ff2 fs4 fc0 sc0 ls3 ws0">和语义,<span class="ff3 fc1 ls17">OSGi <span class="_"> </span></span><span class="fc1">服务平台(<span class="ff3 ls18 wsd">OSGi Service Platform</span>)</span>的语法基于命名空间,<span class="ff3 ls19 wse">Dynamic Module</span></div><div class="t m0 xc h8 y40 ff2 fs4 fc0 sc0 ls3 ws0">定义了<span class="ff3 ls17 wsf"> Dynamic <span class="_ _6"></span>Module<span class="ff2 ls3 ws0">扩展<span class="ff3 ls1a">Bundl<span class="_ _6"></span>e<span class="ff2 ls3">和</span><span class="ls17 ws10">OSGi MANIFEST</span><span class="ff2 ls3">头条目。关于使用</span><span class="ls1b ws11">Dynamic Module</span></span></span></span></div><div class="t m0 xc h8 y41 ff2 fs4 fc0 sc0 ls3 ws0">构建基于<span class="ff3 ls1c">OSGi</span>的应用程序的入门指南,请访问我们的在线</div><div class="t m0 x12 h8 y42 ff2 fs4 fc1 sc0 ls3 ws0">网页<span class="fc0">。<span class="ff3"> </span></span></div><div class="t m0 x10 h8 y43 ff2 fs4 fc0 sc0 ls3 ws0">需要<span class="_ _a"> </span><span class="ff3 ls1d">Spring<span class="_ _a"></span></span>介绍的<span class="_ _a"> </span><span class="ff3 ls10">OSGi<span class="_ _a"></span></span>开发者可以回顾一下</div><div class="t m0 x13 ha y44 ff3 fs5 fc0 sc0 ls1e ws0">springframework.org<span class="_ _a"></span><span class="ff2 ls3">网站上的介绍文档。<span class="_ _b"></span><span class="ff3"> </span></span></div><div class="t m2 x14 hb y45 ff2 fs6 fc0 sc0 ls3 ws0">注意:</div><div class="t m0 x15 hc y45 ff8 fs5 fc0 sc0 ls3 ws0">OSGi</div><div class="t m2 x16 hb y45 ff2 fs6 fc0 sc0 ls3 ws0">是</div><div class="t m0 x17 hc y45 ff8 fs5 fc0 sc0 ls3 ws0">OSGi</div><div class="t m2 x18 hb y45 ff2 fs6 fc0 sc0 ls3 ws0">联盟的商标,联盟尚未最<span class="_ _8"></span>终决定工程名称。</div><div class="t m0 x19 hc y45 ff8 fs5 fc0 sc0 ls3 ws0"> </div><div class="t m2 x14 hb y46 ff2 fs6 fc0 sc0 ls3 ws0">注意:<span class="_ _6"></span>请查看<span class="_ _7"></span>《</div><div class="t m0 x1a hc y46 ff8 fs5 fc0 sc0 ls1f ws12">Spring Dynamic Modules Release </div><div class="t m2 x1b hb y46 ff2 fs6 fc0 sc0 ls3 ws0">已知问题》<span class="_ _7"></span>(</div><div class="t m0 x1c hc y46 ff8 fs5 fc0 sc0 ls20 ws0">spring-dm-issues.pdf</div><div class="t m2 x1d hb y46 ff2 fs6 fc0 sc0 ls3 ws0">)</div><div class="t m2 xc hb y47 ff2 fs6 fc0 sc0 ls3 ws0">文档。</div><div class="t m0 x4 hc y48 ff8 fs5 fc0 sc0 ls3 ws0"> </div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/626304104c65f412598dfcde/bg5.jpg"><div class="t m0 x10 h8 y3c ff3 fs4 fc0 sc0 ls3 ws0"> </div><div class="t m0 x1e hd y3d ff2 fs3 fc0 sc1 ls3 ws0">第<span class="ff1 sc0">1</span>章<span class="ff1 sc0">.</span><span class="ls9"> <span class="_ _6"></span>为何使用<span class="_ _c"> </span><span class="ff1 sc0 ls21 ws13">Spring Dynamic Modules</span><span class="ls3">(<span class="ff1 sc0 ls22">Why </span></span></span></div><div class="t m0 x10 hd y49 ff1 fs3 fc0 sc0 ls23 ws14">Spring Dynamic Modules<span class="ff2 sc1 lsc ws0">)?</span><span class="ls3 ws0"> </span></div><div class="t m0 x10 h8 y4a ff3 fs4 fc0 sc0 ls1d ws0">Spring<span class="_ _d"> </span><span class="ff2 ls3">框架是一套领先而完备的<span class="_ _d"> </span></span><span class="ls18">Java/JEE<span class="_ _d"> </span><span class="ff2 ls3">应用框架。它提供一个轻量级的容器和一种</span></span></div><div class="t m0 xc h8 y42 ff2 fs4 fc0 sc0 ls3 ws0">非侵入编程模型,<span class="_ _7"></span>它基于依赖性注入、<span class="_ _7"></span><span class="ff3 ls1c">AOP<span class="_"> </span><span class="ff2 ls3">和可移植服务抽取。<span class="_ _e"></span><span class="ff3 ls10">OSGi<span class="_"> </span><span class="ff2 ls3">服务平台提供一个动</span></span></span></span></div><div class="t m0 xc h8 y4b ff2 fs4 fc0 sc0 ls24 ws0">态应用程序执行环境,在这个环境里模块(<span class="ff3 ls25">bundles</span>)可以被即时地安装<span class="_ _8"></span>、更新或者移除。</div><div class="t m0 xc h8 y4c ff2 fs4 fc0 sc0 ls3 ws0">它同样对模块性和版本控制有着优秀的支持。<span class="ff3"> </span></div><div class="t m0 x10 h8 y4d ff3 fs4 fc0 sc0 ls12 ws9">Spring Dynamic Mod<span class="_ _6"></span>ules<span class="_"> </span><span class="ff2 ls3 ws0">使得编写一个可部署在<span class="_ _1"> </span><span class="ff3 ls10">OSGi<span class="_"> </span></span>执行环境下的<span class="_ _1"> </span><span class="ff3 ls13">Spring<span class="_"> </span></span>应用程序变</span></div><div class="t m0 xc h8 y4e ff2 fs4 fc0 sc0 ls3 ws0">得很轻松,同时它也可以利用<span class="_ _1"> </span><span class="ff3 ls10">OSGi<span class="_"> </span></span>框架提供的服务。由于<span class="_ _1"> </span><span class="ff3 ls13">Spring<span class="_"> </span></span>框架的简单易用和强大,</div><div class="t m0 xc h8 y4f ff3 fs4 fc0 sc0 ls13 ws0">Spring<span class="_ _1"> </span><span class="ff2 ls3">对<span class="_ _2"> </span></span><span class="ls1c">OSGi<span class="_"> </span><span class="ff2 ls3">的支持同样使得<span class="_ _2"> </span></span><span class="ls10">OSGi<span class="_ _1"> </span><span class="ff2 ls3">应用程序的开发变得更简单和高产。对企业级应用,</span></span></span></div><div class="t m0 xc h8 y50 ff3 fs4 fc0 sc0 ls12 wsb">Spring Dynam<span class="_ _6"></span>ic Modules<span class="_"> </span><span class="ff2 ls3 ws0">和<span class="_ _1"> </span><span class="ff3 ls10">OSGi<span class="_"> </span></span>平台的整合提供如下特性:<span class="ff3"> </span></span></div><div class="t m0 x1f h8 y51 ff9 fs4 fc0 sc0 ls3 ws0"><span class="ff4"> <span class="_ _f"> </span><span class="ff2">更好的模块间的应用逻辑隔离,这些模块具有运行时强制的模块边界<span class="ff3"> </span></span></span></div><div class="t m0 x1f h8 y52 ff9 fs4 fc0 sc0 ls3 ws0"><span class="ff4"> <span class="_ _f"> </span><span class="ff2">同时部署同一个模块(或库)的不同版本的能力<span class="ff3"> </span></span></span></div><div class="t m0 x1f h8 y53 ff9 fs4 fc0 sc0 ls3 ws0"><span class="ff4"> <span class="_ _f"> </span><span class="ff2">动态发现和使用系统内其他模块提供的服务的能力<span class="ff3"> </span></span></span></div><div class="t m0 x1f h8 y54 ff9 fs4 fc0 sc0 ls3 ws0"><span class="ff4"> <span class="_ _f"> </span><span class="ff2">在运行着的系统中动态地安装、更新和卸载模块的能力<span class="ff3"> </span></span></span></div><div class="t m0 x1f h8 y55 ff9 fs4 fc0 sc0 ls3 ws0"><span class="ff4"> <span class="_ _f"> </span><span class="ff2">使用<span class="_ _10"> </span><span class="ff3 ls1d">Spring<span class="_ _10"> </span></span>框架在模块内部和模块之间进行实例化、配置、整合组件的</span></span></div><div class="t m0 xb h8 y56 ff2 fs4 fc0 sc0 ls3 ws0">能力<span class="ff3"> </span></div><div class="t m0 x1f h8 y57 ff9 fs4 fc0 sc0 ls3 ws0"><span class="ff4"> <span class="_ _f"> </span><span class="ff2">对于企业级开发人员来说是一个简单和熟悉的编程模型,便于利用<span class="_ _1"> </span><span class="ff3 ls1c">OS<span class="_ _8"></span>Gi</span></span></span></div><div class="t m0 xb h8 y58 ff2 fs4 fc0 sc0 ls3 ws0">平台的特性<span class="ff3"> </span></div><div class="t m0 xb h8 y59 ff2 fs4 fc0 sc0 ls3 ws0">我们相信<span class="_ _1"> </span><span class="ff3 ls10">OSGi<span class="_"> </span></span>和<span class="_ _1"> </span><span class="ff3 ls13">Spring<span class="_"> </span></span>的结合将为构建企业应用程序提供一个方便易懂的模型。<span class="_ _11"></span><span class="ff3"> </span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>