﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-金家寶-文章分类-Spring2.5框架</title><link>http://www.blogjava.net/jiabao/category/33749.html</link><description>機會只會給垂青有准備的人，運氣不是每個人都有的.</description><language>zh-cn</language><lastBuildDate>Wed, 27 Aug 2008 14:25:44 GMT</lastBuildDate><pubDate>Wed, 27 Aug 2008 14:25:44 GMT</pubDate><ttl>60</ttl><item><title>【转自互联网】Spring事务管理原理</title><link>http://www.blogjava.net/jiabao/articles/225133.html</link><dc:creator>金家寶</dc:creator><author>金家寶</author><pubDate>Wed, 27 Aug 2008 12:15:00 GMT</pubDate><guid>http://www.blogjava.net/jiabao/articles/225133.html</guid><wfw:comment>http://www.blogjava.net/jiabao/comments/225133.html</wfw:comment><comments>http://www.blogjava.net/jiabao/articles/225133.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiabao/comments/commentRss/225133.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiabao/services/trackbacks/225133.html</trackback:ping><description><![CDATA[
		<p>
				<font size="1">Spring是以代理的方式实现对事务的管理。我们在Action中所使用的Service对象，其实是代理对象的实例，并不是我们所写的Service对象实例。既然是两个不同的对象，那为什么我们在Action中可以象使用Service对象一样的使用代理对象呢？为了说明问题，假设有个Service类叫AService，它的Spring事务代理类为AProxyService，AService实现了一个接口 IAService （这里多了一个接口IAService，是为了说明接口代理的方式）。 </font>
		</p>
		<p>
				<font size="1">Spring事务代理方式有两种，一种是类代理方式，一种是接口代理方式。在Spring的配置文件中可以指定代理方式，目前我们使用的都是类代理方式。 //以下配置指定为类代理方式 </font>
		</p>
		<p>
				<font size="1">&lt;property name="proxyTargetClass"&gt;&lt;value&gt;true&lt;/value&gt;&lt;/property&gt; </font>
		</p>
		<p>
				<font size="1">1、类代理方式 </font>
		</p>
		<p>
				<font size="1">类代理方式的实现方式是通过继承的方式来实现，下面用伪代码来说明。 </font>
		</p>
		<p>
				<font size="1">interface IAService{ </font>
		</p>
		<pre>
				<font size="1">  public void save(ValueObject object);
</font>
		</pre>
		<p>
				<font size="1">} </font>
		</p>
		<p>
				<font size="1">class AService implements IAService{ </font>
		</p>
		<pre>
				<font size="1">  public void save(ValueObject object){ ... }
</font>
		</pre>
		<p>
				<font size="1">} </font>
		</p>
		<p>
				<font size="1">// Spring自动生成的代理类. </font>
		</p>
		<p>
				<font size="1">class AProxyService extends AService{ </font>
		</p>
		<pre>
				<font size="1">  public void save(ValueObject object){
      try{
         启动事务的代码;
          super.save(object);
         提交事务的代码; 
      }catch(Exception e){
         回滚事务的代码;
      }
  }
</font>
		</pre>
		<p>
				<font size="1">} </font>
		</p>
		<p>
				<font size="1">在Action的调用代码: </font>
		</p>
		<p>
				<font size="1">AService a = (AService)getBean("aProxyServiceBeanName"); </font>
		</p>
		<p>
				<font size="1">这里 getBean("aProxyServiceBeanName") 得到的是 AProxyService 类的实例，因为AProxyService是AService的一个子类，所以这里可以强制转型为AService。我们后面调用a.save(object)的时候，调用的是AProxyService.save()方法，而这个方法是有事务处理的。Spring就是这样实现了事务管理。 // 下面的这行代码也是同样的效果。 </font>
		</p>
		<p>
				<font size="1">IAService a = (IAService)getBean("aProxyServiceBeanName"); </font>
		</p>
		<p>
				<font size="1">Spring通过CGLib来实现了类代理方式。 </font>
		</p>
		<p>
				<br />
				<font size="1">2、接口代理方式 </font>
		</p>
		<p>
				<font size="1">接口代理方式是通过实现接口，引用类实例来实现的，所以这里一定要有一个接口IAService，而类代理方式是不需要这个接口的。 </font>
		</p>
		<p>
				<font size="1">// Spring自动生成的代理类. </font>
		</p>
		<p>
				<font size="1">class AProxyService implements IAService{ </font>
		</p>
		<pre>
				<font size="1">  private AService aService;
</font>
		</pre>
		<pre>
				<font size="1">  public void setAService(AService aService){
     this.aService = aService;
  }
</font>
		</pre>
		<pre>
				<font size="1">  public void save(ValueObject object){
      try{
         启动事务的代码;
         aService.save(object); // 注意这行代码与上面的不同。
         提交事务的代码; 
      }catch(Exception e){
         回滚事务的代码;
      }
  }
</font>
		</pre>
		<p>
				<font size="1">} </font>
		</p>
		<p>
				<font size="1">在Action的调用代码: </font>
		</p>
		<p>
				<font size="1">AService a = (AService)getBean("aProxyServiceBeanName"); </font>
		</p>
		<p>
				<font size="1">上面这行代码会报ClassCastException错误，因为 getBean("aProxyServiceBeanName") 得到的是 AProxyService 类的实例，而AProxyService实例并不能转型为AService类型，虽然两者都实现了同一个接口，但他们之间并没有继承关系。就象ArrayList 和 LinkedList，他们可以转换成List，但他们之间并不能互相转换。所以这里必须这样使用： </font>
		</p>
		<p>
				<font size="1">IAService a = (IAService)getBean("aProxyServiceBeanName"); // 要转换成接口类型。 </font>
		</p>
		<p>
				<font size="1">调用a.save() 方法其实就是调用 AProxyService.save() 方法。 </font>
		</p>
		<p>
				<font size="1">Spring通过Java动态代理来实现接口代理。 </font>
		</p>
<img src ="http://www.blogjava.net/jiabao/aggbug/225133.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiabao/" target="_blank">金家寶</a> 2008-08-27 20:15 <a href="http://www.blogjava.net/jiabao/articles/225133.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转自互联网】Spring2.5与Spring2.0版本改变（学习.载要.为迁徙到Spring2.5做准备）Spring2.5 change.log </title><link>http://www.blogjava.net/jiabao/articles/221713.html</link><dc:creator>金家寶</dc:creator><author>金家寶</author><pubDate>Wed, 13 Aug 2008 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/jiabao/articles/221713.html</guid><wfw:comment>http://www.blogjava.net/jiabao/comments/221713.html</wfw:comment><comments>http://www.blogjava.net/jiabao/articles/221713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiabao/comments/commentRss/221713.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiabao/services/trackbacks/221713.html</trackback:ping><description><![CDATA[
		<div class="tit"> 原文：<a href="http://hi.baidu.com/grace_king/blog/item/9179c9b42b2ad0708bd4b2ab.html">http://hi.baidu.com/grace_king/blog/item/9179c9b42b2ad0708bd4b2ab.html</a></div>
		<table style="TABLE-LAYOUT: fixed">
				<tbody>
						<tr>
								<td>
										<div class="cnt" id="blog_text">
												<div>
														<p>才开始学习.看到就记录一下.如有版权问题请联系我删除</p>
														<p>Spring2.5rc1发布了，一直想知道它葫芦里卖什么药，以下是文档里的change.log</p>
												</div>
												<div>
												</div>
												<div>
														<span>1． </span>JDK版本： JDK至少要1.4.2以上，如果仍然打算使用1.3的话就请用2.0.6/2.0.7版本吧。</div>
												<div>
												</div>
												<div>
												</div>
												<div>
														<span>2． </span>Jar包：SpringMVC 不再使用spring.jar 这个庞大的包了。 Spring-webmvc.jar, spring-webmvc-portlet.jar 可以在 lib/modules 目录下找到，而且对于Struts1.* 的支持的包也应该改成 spring-webmvc-struts.jar了。</div>
												<div>
												</div>
												<div>
												</div>
												<div>
														<span>3． </span>XML配置：推荐使用XML metadata格式，不过先前的DTD仍然支持。需要注意的一点是，Spring1.2的DTD继续使用“singleton”属性，但是新的Spring2.0 DTD不允许使用“singleton”属性了，改成“scope”属性来描述bean的生命周期。</div>
												<div>
												</div>
												<div>
												</div>
												<div>
														<span>4． </span>废弃的类与方法：有些在先前版本标注过“@deprecated”的类与方法已经完全被废弃了。</div>
												<div>比如：</div>
												<ol>
														<li>
																<div>
																		<code>
																				<span>
																						<font face="新宋体" size="2">ResultReader</font>
																				</span>
																		</code>: 被 <code><span><font face="新宋体" size="2">RowMapper</font></span></code> 接口取代。</div>
														</li>
														<li>
																<div>
																		<code>
																				<span>
																						<font face="新宋体" size="2">BeanFactoryBootstrap</font>
																				</span>
																		</code>: 考虑使用 <code><span><font face="新宋体" size="2">BeanFactoryLocator</font></span></code> 或自定义的bootstrap类来代替。</div>
														</li>
												</ol>
												<div>
														<span>5． </span>Apache OJB：注意Spring源代码中已经完全把这个去掉了，但与之整合的类仍然可以在Spring Modules project找到。<a href="https://springmodules.dev.java.net/">https://springmodules.dev.java.net/</a></div>
												<div>
												</div>
												<div>
												</div>
												<div>
														<span>6． </span>iBATIS：注意Spring已经不再支持iBATIS 的1.3版本了， 如果想继续的话，请升级到2.3以上吧。</div>
												<div>
												</div>
												<div>
												</div>
												<div>
														<span>7． </span>Hibernate：注意Spring已经不再支持Hibernate 3.1之前的版本了，也就是说2.1，3.0的版本也无法使用了。如果仍然要用的话，推荐使用Spring的2.0.6/2.0.7版本。</div>
												<div>
												</div>
												<div>
												</div>
												<div>
														<span>8． </span>JDO：注意Spring已经不支持JDO1.0了。同样，你可以升级到2.0以上版本，或者使用Spring的2.0.6/2.0.7版本。</div>
												<div>
												</div>
												<div>
												</div>
												<div>
														<font face="新宋体">
																<code>
																		<span>9． </span>
																</code>
																<code>UrlFilenameViewController</code>
																<code>：这个东东我也没有接触过，这里，我就简单翻译一下吧。</code>
														</font>
												</div>
												<div>
														<code>
																<font face="新宋体">“考虑到嵌套路径的请求，视图名称现在决定叫<span>UrlFilenameViewController了，这是一个突破性的改变，并且意味着如果你从Spring1.* 升级到Spring2.0 你可以使用该类从而减少Spring Web MVC的配置工作。”</span></font>
														</code>
												</div>
												<div>
														<code>
																<font face="新宋体">
																</font>
														</code>
												</div>
												<div>
														<code>
																<font face="新宋体">
																</font>
														</code>
												</div>
												<div>
														<code>
																<font face="新宋体">大家在使用新版本之前请先注意这些改变，也许对您的系统来说，是很重要的。</font>
														</code>
												</div>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/jiabao/aggbug/221713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiabao/" target="_blank">金家寶</a> 2008-08-13 14:23 <a href="http://www.blogjava.net/jiabao/articles/221713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转自互联网】spring2.5和spring2.0的Jar包改变</title><link>http://www.blogjava.net/jiabao/articles/221712.html</link><dc:creator>金家寶</dc:creator><author>金家寶</author><pubDate>Wed, 13 Aug 2008 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/jiabao/articles/221712.html</guid><wfw:comment>http://www.blogjava.net/jiabao/comments/221712.html</wfw:comment><comments>http://www.blogjava.net/jiabao/articles/221712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiabao/comments/commentRss/221712.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiabao/services/trackbacks/221712.html</trackback:ping><description><![CDATA[
		<div class="tit">原文：<a href="http://hi.baidu.com/bareearthling/blog/item/17e3670297eb400a4bfb513a.html">http://hi.baidu.com/bareearthling/blog/item/17e3670297eb400a4bfb513a.html</a></div>
		<table style="TABLE-LAYOUT: fixed">
				<tbody>
						<tr>
								<td>
										<div class="cnt" id="blog_text">Spring 2.5的Jar打包 
<p>在Spring 2.5中， Spring Web MVC 不再是 <code class="filename"><font face="新宋体">'spring.jar'</font></code> 文件的一部分. Spring MVC以<code class="filename"><font face="新宋体">'spring-webmvc.jar'</font></code> 和<code class="filename"><font face="新宋体">'spring-webmvc-portlet.jar'</font></code>文件形式在发行包的 <code class="literal"><font face="新宋体">lib/modules</font></code> 目录中存在。 另外，对Struts 1.x的支持被独立成 <code class="filename"><font face="新宋体">'spring-webmvc-struts.jar'</font></code>。</p><p><span class="emphasis"><em>注意: 经常被使用的Spring的<code class="classname"><font face="新宋体">DispatcherServlet</font></code>也是Spring Web MVC框架的一部分。</em></span> 因此，就算你只是为了远程访问（例如，暴露Hessian或者 HTTP调用服务）而使用<code class="classname"><font face="新宋体">DispatcherServlet</font></code>,你也得将<code class="filename"><font face="新宋体">'spring-webmvc.jar'</font></code>(或者 <code class="filename"><font face="新宋体">'spring-webmvc-portlet/struts.jar'</font></code>)放到<code class="filename"><font face="新宋体">'spring.jar'</font></code>旁边去。</p><p>Spring 2.0的 <code class="filename"><font face="新宋体">'spring-jmx.jar'</font></code> 和 <code class="filename"><font face="新宋体">'spring-remoting.jar'</font></code>已经被转移到 Spring 2.5的<code class="filename"><font face="新宋体">'spring-context.jar'</font></code> (针对 JMX 和非HTTP 远程支持)，部分转移到 <code class="filename"><font face="新宋体">'spring-web.jar'</font></code> (针对HTTP 远程支持)。</p><p>Spring 2.0的 <code class="filename"><font face="新宋体">'spring-support.jar'</font></code> 被改名为 <code class="filename"><font face="新宋体">'spring-context-support.jar'</font></code>, 更好的表达其真实含义。 <code class="filename"><font face="新宋体">'spring-portlet.jar'</font></code> 被改名为 <code class="filename"><font face="新宋体">'spring-webmvc-portlet.jar'</font></code>,表明它是Spring Web MVC framework的子模块之一。 类似的, <code class="filename"><font face="新宋体">'spring-struts.jar'</font></code> 被改为<code class="filename"><font face="新宋体">'spring-webmvc-struts.jar'</font></code>。</p><p>Spring 2.0的<code class="filename"><font face="新宋体">'spring-jdo.jar'</font></code>, <code class="filename"><font face="新宋体">'spring-jpa.jar'</font></code>, <code class="filename"><font face="新宋体">'spring-hibernate3.jar'</font></code>, <code class="filename"><font face="新宋体">'spring-toplink.jar'</font></code> 和 <code class="filename"><font face="新宋体">'spring-ibatis.jar'</font></code> 被合并到Spring 2.5大粒度的<code class="filename"><font face="新宋体">'spring-orm.jar'</font></code>中。</p><p>Spring 2.5的 <code class="filename"><font face="新宋体">'spring-test.jar'</font></code> 取代了<code class="filename"><font face="新宋体">'spring-mock.jar'</font></code>,表达其对test context framework的强烈关注。 注意 <code class="filename"><font face="新宋体">'spring-test.jar'</font></code> 包含了上个版本 <code class="filename"><font face="新宋体">'spring-mock.jar'</font></code>中的一切，因此如果是单元或集成测试，可以直接取代。</p><p>Spring 2.5的 <code class="filename"><font face="新宋体">'spring-tx.jar'</font></code> 取代了 <code class="filename"><font face="新宋体">'spring-dao.jar'</font></code> 和<code class="filename"><font face="新宋体">'spring-jca.jar'</font></code> 文件，表达其对transaction framework的强烈关注。</p><p>Spring 2.5 将其jar文件直接作为OSGi兼容的bundle。这使得在OSGi环境中使用Spring 更加方便，不再需要定制打包了。</p></div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/jiabao/aggbug/221712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiabao/" target="_blank">金家寶</a> 2008-08-13 14:16 <a href="http://www.blogjava.net/jiabao/articles/221712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>