??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久久av蜜臀,成人av在线一区二区,日韩亚洲一区二区http://www.aygfsteel.com/realzar/category/7111.html皇家撒拉哥萨zh-cnWed, 07 Mar 2007 15:59:44 GMTWed, 07 Mar 2007 15:59:44 GMT60 轻量U开?/title><link>http://www.aygfsteel.com/realzar/archive/2006/01/18/28467.html</link><dc:creator>开源爱好?/dc:creator><author>开源爱好?/author><pubDate>Wed, 18 Jan 2006 04:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/realzar/archive/2006/01/18/28467.html</guid><wfw:comment>http://www.aygfsteel.com/realzar/comments/28467.html</wfw:comment><comments>http://www.aygfsteel.com/realzar/archive/2006/01/18/28467.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/realzar/comments/commentRss/28467.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/realzar/services/trackbacks/28467.html</trackback:ping><description><![CDATA[<span id="wmqeeuq" class=postbody><FONT size=2>W?1 部分: 核心原则及原?<BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>引用:</FONT></B></SPAN></TD></TR> <TR> <TD class=quote>在轻量开发中Q您基本上可以: <BR><BR>* 合ƈq程、技术和原理?<BR>* 优先选择较简单的技术?<BR>* 在一个稳固、轻量的基上,q行构徏?<BR>* 量争取最可能的透明性?<BR>* 使用您可以利用的技术,如依赖注入和 AOP?/TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><A target=_blank><FONT color=#006699 size=2>http://www-128.ibm.com/developerworks/cn/opensource/os-lightweight1/</FONT></A><FONT size=2> <BR><BR>W?2 部分: 如何减轻容器 <BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>引用:</FONT></B></SPAN></TD></TR> <TR> <TD class=quote>现在Q您已经大概了解了轻量容器。您了解了以下的基本设计理论Q?<BR><BR>* 构徏一个接?POJO 的容器,而不是受限制的组?<BR>* 使用依赖注入来松散、解析依赖?<BR>* 使用拦截?AOPQ将服务?POJO 相关?/TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><A target=_blank><FONT color=#006699 size=2>http://www-128.ibm.com/developerworks/cn/opensource/os-lightweight2/</FONT></A><FONT size=2> <BR><BR>W?3 部分: Spring 露出水面 <BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>引用:</FONT></B></SPAN></TD></TR> <TR> <TD class=quote>Spring 的重大意?<BR>对于那些使用 Spring 的hQSpring 无疑是革命性的。它的一些简单思想引发了媄响深q的l果Q?<BR><BR>* Spring 有力地开拓了企业U服务容器。您不再“隶属”于容器提供?API 或服务。可以?Spring 上下文管理预打包的服务,整合W三Ҏ务或自己~写服务?<BR>* Spring 在可试性方面有了长的q步。通过 SpringQ能够用依赖注入将模拟对象插入到难以接触的位置Q在容器外运行对象(因ؓq些对象?POJOQ,甚至使用容器提供不可预知的数据?<BR>* Spring 的胶水代码得只要编写很的代码可以轻松插入企业服务。编写的代码少Q维护和扩展代码时工作量p?<BR>* Spring 代表一个开放源码项目,重新定义?Java 商业组开发Y件的方式。Spring 对于最?EJB 规范的媄响是不容|疑的,同时也是非常重要的?/TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><A target=_blank><FONT color=#006699 size=2>http://www-128.ibm.com/developerworks/cn/opensource/os-lightweight3/</FONT></A><FONT size=2> <BR><BR>W?4 部分: 轻量U容器的比较 <BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>引用:</FONT></B></SPAN></TD></TR> <TR> <TD class=quote>哪一个最好? <BR><BR>目前Q只有一个真正的{案。HiveMind h有趣的创斎ͼPicoContainer h易于使用的模型(理论上)Q但C֌g已经投票选择?Spring Framework。随着旉的推U,新的容器可能会成长,HiveMind 可能不断获得市场份额Q但目前QSpring 是您的最佳选择?<BR><BR>如果您愿意冒一些险Q而用不太成熟或不太行的容器,您可能决定实?HiveMindQ如果需要模块别的配置Q或 PicoContainerQ如果想要微的容器Q。如果需要许多胶水代码来集成持久引擎、事务处理策略和安全性等斚wQSpring h最完整的组件堆。但误住:您可以在 HiveMind 容器中?Spring lg?/TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><A target=_blank><FONT color=#006699 size=2>http://www-128.ibm.com/developerworks/cn/opensource/os-lightweight4/</FONT></A><BR><span id="wmqeeuq" class=postbody><FONT size=2>W?5 部分: 在保守公司进行敏捷开?<BR><BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>引用:</FONT></B></SPAN></TD></TR> <TR> <TD class=quote>本文介绍合力完成一U不同的zdQ应用程序开发。敏捷开发流E,比如极限~程QExtreme ProgrammingQXPQ和 ScrumQ寻求降低流E开销。尽存在许多不同的程Q但它们当中都有一些共同的势Q?<BR><BR>* 来重视客户参与,而非重量U需求文?<BR>* 通过重构改进质量和设计;重的、自动化的单位测试;q箋集成 <BR>* 团队,较少的正式沟通和更多的非正式沟通(15 分钟的站立早会,更多的配对编E) <BR>* 短而一致的周期Q最后是客户反馈 <BR><BR>敏捷Ҏ剔除了不需要的程Q直到只留下完成工作所必需的流E。尽许多编Eh员理解轻量、敏h法的强大功能Q但许多理人员习惯使用更传l的程。如果您认ؓ敏捷可以帮助您,那么通过应用下列思想来学习如何协调传l管理与敏捷开发流E: <BR><BR>* 您使用的语a改ؓ侧重于原则,而非程?<BR>* 创徏而灵巧的团队?<BR>* 重视可测量的交付?<BR>* 重视U性?<BR>* 重构代码q自动化试?<BR>* 获得客户反馈?/TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><A target=_blank><FONT color=#006699 size=2>http://www-128.ibm.com/developerworks/cn/opensource/os-lightweight5/</FONT></A><FONT size=2> <BR><BR>W?6 部分: 持久性策?<BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>引用:</FONT></B></SPAN></TD></TR> <TR> <TD class=quote><BR>话 1Q技术L最要紧的?<BR><BR>不论您是在谈?RDBMS q是持久性框Ӟ持久关系都是长期的。您需要知道您选择的方案将长时间拥有市Z额。如果不是,您将冒着被迫d指定框架的风险,而这q您的意愿?<BR>话 2Q对象关pL程序(Object Relational MappersQORMQ隐藏了所有的数据库问题?<BR><BR>持久性框架简化了一些问题,但引入了一些其他的问题。如果您不理解底层架构,那么找懂的h问,或者不要用对象关pL架?<BR>话 3QJDBC L?ORM 要快?<BR><BR>当然了,一个非常协调的特定 Java 实现L会打败普通的 ORMQ但是您很难扑ֈ一个非常协调的 JDBC 应用E序。JDO ?Hibernate 之类的框架提供许多方法来提升性能?<BR>话 4QORM L合适的工具?<BR><BR>常常Q您会发现要求更好的讉K SQL 的问题。您也会发现面向批处理的而非交互式的问题Q或要求直接讉K数据库行Q而非完整的对象模型。这些问题ƈ没有充分利用 ORM。更p糕的是Q一些解x案也怼事?<BR>话 5QJava ?ORM 解决Ҏ是处理持久性的惟一的好Ҏ?<BR><BR>其他语言同样有具有竞争力的持久性策略。Microsoft] {略們֐于接受关pL据库q与行集一起工作。您让应用程序与关系模式紧密l合Q但是您获得了一U能力,可以l定行集到用L面控Ӟq整个应用程序中它们与~存{略集成Q甚臌防火墙与缓存代理。Ruby 语言?RailsQ后者有一个有效的记录框架。对于许多类型的问题Q记录框架比 Java 技术解x案更加动态和高效?<BR></TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><A target=_blank><FONT color=#006699 size=2>http://www-128.ibm.com/developerworks/cn/opensource/os-lightweight6/</FONT></A><FONT size=2> <BR><BR>W?7 部分: Java 替代Ҏ <BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>引用:</FONT></B></SPAN></TD></TR> <TR> <TD class=quote>而言之,Java 语言不是一U生产效率非帔R的程序语a。创做了一些聪明的妥协来从 C++ 夺取控制权,但我们开始ؓ那些妥协付出代h了。在 Beyond Java 一书中Q我详细讨论了这些问题。我仍然为大多数的项目?Java 语言。很Ҏ扑ֈ适合我需要的框架。我能很快地扑ֈE序员和工具。它是一U经q验证的~程语言。我的许多客h太多的遗留代码,修改h工作量太大?<BR><BR>但是Q我已经开始ؓ某些已付目使用不同的语a。对于大型关pL据库上的Z Web 的用L面,Ruby on Rails 是有效的。对于要求有限的可׾~性和可用性但要求复杂D的应用程序,Seaside 是有效的。许多语a处理丰富的客L开发要?Java 语言好?<BR><BR>我还发现Q如果赢利较大,处于创业阶段的公司愿意承担更多的风险。如果生产效率是首要兛_的问题,团队很小Qƈ且您正在解决一个很适合于动态语a的问题,那么使用动态语a是很有意义的。通过q移CU更加动态的语言和一个更加适合目的框Ӟ我ؓ一个客戯省了 60Q的目预算。通过q移CU技能要求没?Java 语言那么严格的语aQ我让另一个客户减了 30Q?多的职员?<BR><BR>底线Q有Ӟ当考虑轻量U开发时Q值得q Java 语言看一看。在接下来的几篇文章中,我将d Java 语言来探索一U新的语a和几个轻量框架?/TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><A target=_blank><FONT color=#006699 size=2>http://www-128.ibm.com/developerworks/cn/opensource/os-lightweight7/</FONT></A><FONT size=2> <BR><BR>Part 8: Seaside <BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>引用:</FONT></B></SPAN></TD></TR> <TR> <TD class=quote>In mid-1999, Tennessee rivers were low, but the Ocoee River was flowing well. As I approached a rapid called Hell Hole, I could see the other tourists shudder with fear, but I wasn't worried. In this massive raft, we had nothing to worry about. In fact, up ahead, a kayaker was playing in the hole, and his body slowly slid down, as if he were on an elevator. We passed over, and he came right back up, still surfing the hole. Strange and wonderful. <BR><BR>My raft might be bigger and safer, but there were things it just couldn't do. In his tiny kayak (called a playboat) he could surf the waters beneath the surface to do things seeming alien to those of us in the raft. The Seaside framework is like that. You wouldn't use it for all Web development, but under these circumstances, you might give it a try: <BR><BR>* You have sophisticated work flow and want to manage flow from one simple program. <BR>* You don't want to stay with a safe, conservative language, like the Java?programming language. <BR>* You like Smalltalk or one of the Smalltalk dialects. <BR>* You have a start-up company in which picking a productive technology is much more important than picking a fast one. <BR><BR>This article gives a high-level tour of Seaside. If you like what you see, you'll have enough information to dive deeper.</TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><A target=_blank><FONT color=#006699 size=2>http://www-128.ibm.com/developerworks/opensource/library/os-lightweight8/</FONT></A><BR></SPAN></SPAN><img src ="http://www.aygfsteel.com/realzar/aggbug/28467.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/realzar/" target="_blank">开源爱好?/a> 2006-01-18 12:45 <a href="http://www.aygfsteel.com/realzar/archive/2006/01/18/28467.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring的y妙之?/title><link>http://www.aygfsteel.com/realzar/archive/2006/01/18/28464.html</link><dc:creator>开源爱好?/dc:creator><author>开源爱好?/author><pubDate>Wed, 18 Jan 2006 04:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/realzar/archive/2006/01/18/28464.html</guid><wfw:comment>http://www.aygfsteel.com/realzar/comments/28464.html</wfw:comment><comments>http://www.aygfsteel.com/realzar/archive/2006/01/18/28464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/realzar/comments/commentRss/28464.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/realzar/services/trackbacks/28464.html</trackback:ping><description><![CDATA[<span id="wmqeeuq" class=postbody><FONT size=2>作者注Q在《Better, Faster, Lighter Java》一书第八章的这份节录中Q我们将看到一个用Spring框架的企业web应用E序例子。尽Hibernate提供了单个的服务QSpring框架却提供了一U高效地构徏和汇~Java应用E序的方法,以及多种服务的抽象。尽?Spring支持多种服务Q但是它最受关注也是最的特性是杰出的分层和装。与EJB一PSpring的中心组件是一个容器;而且Spring框架也同h供对核心J2EE服务的访问。但是这是它们仅有的相g处了。下面是一个比喅R?<BR><BR>  我喜Ƣ皮划艇q动Q也׃很多旉来教授皮划艇技巧。我的一个专长就是教授学生如何在花中翻转弄M的皮划艇。一天,我向一位四肢发辄大个子和一位玲珑瘦、体重只?7的奛_传授该技巧。当我在陆地上从头到仔l地讲述q项技巧的时候,大个子直勑֋的盯着q方Q不感兴。而那位女士注意力集中Q而且希望反复l习q项基础技巧。在半个时之内Q她出色地完成了第一ơ翻转,而他只是上下摇摆Q在q静的水面上拍打出细的白色泡沫。直到第三个学时Q他才完成这个动作。在以后的几个学时中Q她依靠技巧快速提高,而他却单凭力量在水中挣扎。到了实늚时候,她翻转了皮划艇,而他却在游泳。程序员们,误住:解决问题的最x式是依靠单性和技巧,而不是蛮力?<BR><BR>Pet StoreQ一个反?<BR>  Pet Store J2EE应用E序是一个很p糕的编E例子。它误导成千上万名J2EE开发h员构建出设计p糕、性能低下的代码。它q是一个基准的争论焦点?Middleware Company致力于制订比较J2EE和微软的.NETq_的基准。他们选择Pet Store的J2EE版本作ؓ基准的基。尽他们很努力地调优,J2EE版本q是惨|lMicrosoft .NET版本Q因此导致J2EE设计备受批评。我不想针对q次惨|谴责什么。我有不同的看法。我坚持认ؓQ利用J2EEQ尤其是EJBQ很隑ּ发出整洁、高性能的代码。另一斚wQPet Store基准本n׃D更大的问题?<BR><BR>  基准U争q后Q很多h借助于更qx且更单的技术来实现Pet Store。其中一U最强大且最单的实现Ҏ是Clinton Begin所使用的,他利用一个称为iBatis的DAO框架来代替全部的实体bean。Rod Johnson的团队将该应用程序{化ؓSpringQƈ且现在已l与Spring框架一起发布。以下是相关的一些细节: <BR><BR></FONT> <UL><BR> <LI>Spring jPetStore应用E序包含在M4或更高版本的Spring中?<BR> <LI>它是一U具有JDBC DAO层的数据驱动的应用程序?<BR> <LI>它提供了Strut的替代前端以及Spring MVC框架?<BR> <LI>它提供了两种不同的模型。最单的模型使用单一数据库和单JDBC事务。另一U模型可以跨多个数据库用JTA事务理?<BR><BR></LI></UL><BR><BR>在下面的部分中,我将演示hMVC web前端和单个数据库中的单事务的应用E序版本。我重点讨论域模型、单数据库DAO层、单一事务以及Spring MVC前端。Spring|站上提供了大量的资源,可供希望深入研究的开发h员用?<BR><BR><SPAN style="FONT-WEIGHT: bold">配置文g</SPAN> <BR>  了解Spring应用E序应当从配|文件开始,它显CZ主要的bean以及应用E序如何它们组合在一赗Spring配置文g在应用程序上下文中定义bean。将上下文看作是攉应用E序指定资源的一U便利方式?<BR><BR>  很多J2EE应用E序借助单元素来了解诸如q接之类的应用程序资源。这U用途的单元素与很多Java开发h员经怋用的全局变量差别不大?J2EE中的替代Ҏ是一U称为JNDI的目录服务,但是对于许多常见用例来说它就是杀鸡的牛刀了。而Spring使用一U应用程序上下文。最初,需要在一个简单的XML文g中指定应用程序上下文Q尽也可以通过扩展Spring来接受其它类型的配置文g。以下是应用E序上下文中可能会包含的内容Q?<BR><BR><SPAN style="FONT-WEIGHT: bold">数据?/SPAN> <BR>  理q接的Javac,通常在一个池中?<BR><BR><SPAN style="FONT-WEIGHT: bold">DAO?/SPAN> <BR>  如果应用E序使用了数据库Q那么很可能需要隔dDAO层数据库的访问。可以通过应用E序上下文来讉K该层?<BR><BR><SPAN style="FONT-WEIGHT: bold">持久性管理器</SPAN> <BR>  每个持久性框枉有一个应用程序用来访问其Ҏ的对象或工厂。对于Hibernate来说Q它是会话和会话工厂。而对于JDO来说Q它是持久性管理器工厂和持久性管理器?<BR><BR><SPAN style="FONT-WEIGHT: bold">事务{略</SPAN> <BR>  可以昑ּ地声明希望在事务中用的Ҏ以及用于实施该策略的事务理器?<BR><BR><SPAN style="FONT-WEIGHT: bold">事务理?/SPAN> <BR>  J2EE中有很多不同的事务管理策略。对于单一数据库的应用E序QSpring允许使用数据库的事务理。对于多个数据库或事务源QSpring允许使用JTA。可以将事务理器保存在应用E序上下文中?<BR><BR><SPAN style="FONT-WEIGHT: bold">验证逻辑</SPAN> <BR>  Spring框架使用一U与StrutcM的验证框架。Spring允许像配|其他业务组仉样配|验证逻辑?<BR><BR><SPAN style="FONT-WEIGHT: bold">视图和控制器</SPAN> <BR>  Spring框架允许图指定控制器Qƈ帮助用户通过控制器来配置D路径?<BR><BR>  jPetStore应用E序使用包含一个数据源、DAO层和一U事务逻辑的Spring应用E序上下文。用户定义XML文档中上下文的内容,?XML文档列出了一pdbean。每一个XML配置文g都包含一?lt;beans>题头Q其后是一pd<bean>lg和一?</beans>脚注。如下所C: <BR></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>代码:</FONT></B></SPAN></TD></TR> <TR> <TD class=code><BR><beans> <BR><BR><bean id="MyFirstBean" class="package.MyFirstBeanClass"> <BR>  <property name="myField" ref local="MySecondBean"/> <BR></bean> <BR><BR><bean id="MySecondBean" class="package.MySecondBeanClass"> <BR></bean> <BR><BR></beans></TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><FONT size=2>以上是构成应用程序上下文的bean。它们代表应用程序中的顶Ubean。(它们可以创徏不出现在配置文g中的其他对象或bean。)在本例中Q我们会创徏两个beanQMyFirstBean和MySecondBean。然后,通过指定MySecondBean作ؓ字段myField的|它们关联v来。当Spring启动的时候,它会创徏两种对象Qƈ讄myField的倹{当在应用程序上下文中需要它们的时候,可以Ҏ名称来访问这两种对象?<BR><BR>  我们来看一个更具体的实例。jPetStore应用E序Z务逻辑、数据层和用L面提供了三种配置文gQ每USpring配置文g各自描述三者之一Q如?-2所C?<BR><BR><IMG src="http://dev2dev.bea.com.cn/images/image051227001.gif" border=0> <BR></FONT><SPAN style="FONT-STYLE: italic"><BR><FONT size=2>?-2 jPetStore应用E序提供了分别与三个不同的层相匹配的Spring应用E序上下?/FONT></SPAN><FONT size=2> <BR><BR>  q些配置文g指定了域模型、数据层和表C层的上下文。例8-1展示了jPetStore应用E序的业务逻辑应用E序上下文的一部分。注意:Z单v见,我将包名org.springframework.samples.jpetstore...~写为jpetstore?<BR><BR>?-1 applicationContext.xml <BR><BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>代码:</FONT></B></SPAN></TD></TR> <TR> <TD class=code><BR><beans> <BR>[1] <bean id="accountValidator" class="jpetstore.domain.logic.AccountValidator"/> <BR>[2] <bean id="orderValidator" class="jpetstore.domain.logic.OrderValidator"/> <BR>[3] <bean id="petStoreTarget" class="jpetstore.domain.logic.PetStoreImpl"/> <BR>[4]   <property name="AccountDao"><ref bean="accountDao"/></property> <BR>      <property name="categoryDao"><ref bean="categoryDao"/></property> <BR>      <property name="productDao"><ref bean="productDao"/></property> <BR>      <property name="itemDao"><ref bean="itemDao"/></property> <BR>      <property name="orderDao"><ref bean="orderDao"/></property> <BR>    </bean> <BR>  <BR>[5] <bean id="petStore" <BR>   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <BR>      <property name="transactionManager"><ref bean="transactionManager"/></property> <BR>      <property name="target"><ref bean="petStoreTarget"/></property> <BR>      <property name="transactionAttributes"> <BR>        <props> <BR>          <prop key="insert*">PROPAGATION_REQUIRED</prop> <BR>          <prop key="update*">PROPAGATION_REQUIRED</prop> <BR>          <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> <BR>        </props> <BR>      </property> <BR>    </bean> <BR><BR>  </beans> <BR></TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><FONT size=2>以下是对注释的解释: <BR><BR>  [1]业务逻辑。这部分Q包括所有粗体代码)包含核心的业务逻辑。验证和域模型都视ؓ业务lg?<BR><BR>  [2]验证器。这是Order的验证器。一旦用h交Order格式Qƈ发送到错误面或order完成面QSpring׃按照要求调用该验证器?<BR><BR>  [3]核心业务实现。该cd含持久性域模型的核心实现。它包含以下所有的DAO对象?<BR><BR>  [4]属性。每一个bean都具有自q属性,q些属性引用定义在其他地方的bean。在本例中,bean属性是单个的DAO。每一个bean都定义在另一个Spring配置文g中?<BR><BR>  [5]事务声明。这个bean指定了应用程序的事务{略。在本例中,应用E序使用在另一个Spring配置文g中指定的事务理器。它声明了应当传播ؓ事务的方法。例如,所有以insert开头的Ҏ应当传播Z务?<BR><BR>  而言之,该配|文件就像一U粘合剂Q将应用E序的业务逻辑_合在一赗在文g中,您会看到一些对本nq未包含在配|文件中的beanQ如Q?DAO对象Q的引用。随后,您会看到其他两种配置文gQ它们定义了一些遗漏的bean。其中一个配|文件指定了事务理器的数据讉K对象。另一个配|文件指定了用户界面所需的bean。最好将配置文g分离C同的层中Q这样就可以按照需要配|各个层。例如,可能需要更改用L面的{略Q比如从Spring MVC web更改为StrutQ,或者数据访问的{略Q比如从h单个数据库的DAO更改为具有JTA事务、跨两个数据库的DAOQ?<BR><BR>  如果需要实例化XML上下文文件中的beanQ那么非常简单。例如,要访问context.xml文g中Customercd的名UCؓmyCustomer的beanQ可以采用以下三个步骤: <BR><BR>1, 获取包含配置的XML文g的输入流Q?<BR><BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>代码:</FONT></B></SPAN></TD></TR> <TR> <TD class=code>InputStream stream = getClass( ). <BR>getResourceAsStream("context.xml");</TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><FONT size=2>2,使用输入创建新的Spring bean工厂Q?<BR><BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>代码:</FONT></B></SPAN></TD></TR> <TR> <TD class=code>XmlBeanFactory beanFactory = new XmlBeanFactory(stream);</TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><FONT size=2>3, 使用该工厂创?xml文g中定义的一个对象: <BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>代码:</FONT></B></SPAN></TD></TR> <TR> <TD class=code><BR>Customer cust = <BR> (Customer)beanFactory.getBean(myCustomer);</TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><FONT size=2>  或者,如果希望Spring初始化一个上下文Q然后抓取会话外观,可以使用以下代码Q?<BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>代码:</FONT></B></SPAN></TD></TR> <TR> <TD class=code><BR>protected static final String CONTEXT_FILE = "WEB-INF/applicationContext.xml"; <BR>Biz biz;  // session façade <BR><BR>FileSystemXmlApplicationContext ctx = <BR>   new FileSystemXmlApplicationContext(CONTEXT_FILE); <BR>biz = (Biz) ctx.getBean("biz");</TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><FONT size=2> 最好放开控制权。通常不必直接讉K应用E序上下文。框架会执行该操作。例如,如果您正在用servletQ那么Spring框架会ؓ每一?servlet提供一个上下文Qƈ为所有servlet提供一个M上下文。通常可以从中获得正确的上下文信息Q随后您׃看到q一炏V既然已l看C表示jPetStore应用E序的配|文Ӟ现在应该看看如何构徏各个元素Q?<BR><BR>域模?<BR>  与本书阐q的原理相对应,该应用程序以?-3中的透明域模型ؓ基础。该域模型包含表C现实世界的各个对象之间的业务关pRPet Store由包含项目的cartQ购物RQ和orderQ订单)l成?<BR><BR><IMG src="http://dev2dev.bea.com.cn/images/image051227002.gif" border=0> <BR>?-3 应用E序的中心是域模型?<BR><BR>  应用E序表示了一个简单的宠物商店。它׃个包含购物R目(cart item)的购物Rl成Q该购物车又填充了一个包含线目(line item)的订单。项?item)由按cd(category)l织的?product)l成。每个对象都是一个透明的业务对象,被实Cؓh一些属性和业务Ҏ的Java bean。例8-2展示了一个CartItem。ؓ了简单v见,我已l去掉导入和包细节?<BR><BR>  ?-2CartItem.java <BR><BR></FONT></SPAN> <TABLE cellSpacing=1 cellPadding=3 width="90%" align=center border=0> <TBODY> <TR> <TD><span id="wmqeeuq" class=genmed><B><FONT size=2>代码:</FONT></B></SPAN></TD></TR> <TR> <TD class=code><BR>[1] public class CartItem implements Serializable {        <BR><BR>    /*Private Fields*/ <BR><BR>    private Item item; <BR>    private int quantity; <BR>    private boolean inStock; <BR><BR>    /*JavaBeans Properties*/ <BR><BR>[2] public boolean isInStock() { return inStock; } <BR>    public void setInStock(boolean inStock) { this.inStock = inStock; } <BR><BR>    public Item getItem( ) { return item; } <BR>    public void setItem(Item item) { <BR>      this.item = item; <BR>    } <BR><BR>    public int getQuantity( ) { return quantity; } <BR>    public void setQuantity(int quantity) { <BR>      this.quantity = quantity; <BR>    } <BR><BR>[3] public double getTotalPrice() { <BR>      if (item != null) { <BR>        return item.getListPrice( ) * quantity; <BR>      } <BR>      else { <BR>        return 0; <BR>      } <BR>    } <BR><BR>    /*Public methods*/ <BR><BR>    public void incrementQuantity( ) { <BR>       quantity++; <BR>    } <BR><BR>  } <BR></TD></TR></TBODY></TABLE><span id="wmqeeuq" class=postbody><BR><BR><FONT size=2>以下是注释的含义Q?<BR><BR>  [1]Spring框架不会lgl承SpringcR它们是完全透明的,q且如果q行试或者情况需要,q可以驻留在容器的外部?<BR><BR>  [2]每一个字D都使用get和setҎq行包装Q以便Spring可以通过Java反射来配|他们。(Springq可以通过构造函数来配置它们。) <BR><BR>  [3]与很多EJB应用E序不同Q在域模型中包含业务域逻辑非常有用?<BR><BR>  我将q种模型UCpassive。它完全由域外面的对象调用,q且仅与域中的其他对象耦合。注意,虽然它具有私有属性和公有字段Q但是它不仅仅是一个值对象。它包含用于计算Mh和增加数量的业务Ҏ。这U设计得该业务对象易于理解和重用,即是在整体设计改进的情况下。当我们介绍持久性方面时Q您׃看到该模型的其他部分?<BR><BR>  下周Q在q个摘录自《Better, Faster, Lighter Java》一书的Springpd的最后一部分中,作者将讲述如何持久性添加到Pet Store例子中,q讨论Spring框架中的表示逻辑?<BR><BR>原文出处: Demonstrating Spring's Finesse </FONT><A target=_blank><FONT color=#006699 size=2>http://www.onjava.com/pub/a/onjava/excerpt/BFLJava_chap8/index.html</FONT></A><FONT size=2> <BR><BR>作者简?<BR>Bruce A.ate是一名山地R手和皮划艇手Q也?个孩子的父亲。在闲暇旉里,他还是一名独立顾问。他住在德克萨斯州的首府奥斯汀。他~写?本书Q其中包括最畅销的《Bitter Java》一书,最q出版了《Better,Faster,Lighter Java》(O'ReillyQ?<BR>Alexander Ananiev是一个程序员、作者、导师和指导员,他专ȝ实世界Y件应用程序?/FONT></SPAN><img src ="http://www.aygfsteel.com/realzar/aggbug/28464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/realzar/" target="_blank">开源爱好?/a> 2006-01-18 12:43 <a href="http://www.aygfsteel.com/realzar/archive/2006/01/18/28464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring资源http://www.aygfsteel.com/realzar/archive/2006/01/18/28457.html开源爱好?/dc:creator>开源爱好?/author>Wed, 18 Jan 2006 04:05:00 GMThttp://www.aygfsteel.com/realzar/archive/2006/01/18/28457.htmlhttp://www.aygfsteel.com/realzar/comments/28457.htmlhttp://www.aygfsteel.com/realzar/archive/2006/01/18/28457.html#Feedback0http://www.aygfsteel.com/realzar/comments/commentRss/28457.htmlhttp://www.aygfsteel.com/realzar/services/trackbacks/28457.htmlSpring英文资源
Spring官方|站
http://www.springframework.org/

Spring专业|站
http://www.springframework.com/

Spring C֌
http://www.thespringexperience.com

SourceForge Spring目|址
http://sourceforge.net/projects/springframework/

Spring论坛
http://forum.springframework.org/

Spring邮g列表
http://sourceforge.net/mail/?group_id=73357

Spring Confluence
http://opensource.atlassian.com/confluence/spring

Introducing to Spring Framework
http://www.theserverside.com/articles/article.tss?l=SpringFramework

CKNY's Very Quick Wiki
http://ckny.eatj.com/wiki/jsp/Wiki?Spring

Spring中文资源
Spring中文论坛
http://spring.jactiongroup.net

Introducing to Spring FrameworkQ中文版Q?
http://spring.jactiongroup.net/viewtopic.php?t=453

Spring开发指?
http://www.xiaxin.net/Spring_Dev_Guide.rar

Spring相关个h
Rod JohnsonQSpring之父
个h介绍Q?/FONT>http://www.springframework.com/people/rod.html
blogQ?/FONT>http://blog.springframework.com/rod/

Juergen HoellerQSpring协同创始?
个h介绍Q?/FONT>http://www.springframework.com/people/juergen.html
blogQ?/FONT>http://blog.springframework.com/juergen/

Bruce TateQ知名Java/Spring图书作?
个h介绍Q?/FONT>http://www.springframework.com/people/bruce.html
blogQ?/FONT>http://today.java.net/pub/au/186

Colin SampaleanuQSpring核心成员
个h介绍Q?/FONT>http://www.springframework.com/people/colin.html
blogQ?/FONT>http://blog.exis.com/colin/

Keith DonaldQSpring核心成员QSpring Rich Client Project的创?
个h介绍Q?/FONT>http://www.springframework.com/people/keith.html
blogQ?/FONT>http://jroller.com/page/kdonald

Alef Arendsen
个h介绍Q?/FONT>http://www.springframework.com/people/alef.html

Spring LiveQ《Spring Live》作者的Blog
http://jroller.com/page/raible

Craig's stack traceQ《Spring in action》作者的blog
http://jroller.com/page/habuma

Spring子项?/SPAN>
Spring Rich Client Project
http://sourceforge.net/projects/spring-rich-c

Spring IDE for Eclipse
http://www.springframework.org/spring-ide/eclipse/

Spring相关目
Spring For .NET
http://www.springframework.net/

Acegi Security System
http://acegisecurity.sourceforge.net/

JSF-Spring
http://jsf-spring.sourceforge.net/

Spring-Validator
http://sourceforge.net/projects/js-validation/


]]>
վ֩ģ壺 | | | | ʡ| °| | ɽ| | Ϊ| ɳ| | | | Ϫ| Ƿ| | ɽ| Ʊ| | | ½| ߶| | | ˼é| °Ͷ| | | ɳ| | | ͼʲ| | Դ| Ӣɽ| ʯ| | | üɽ| ڻ|