论坛首页 Java企业应用论坛

Spring事务处理

浏览 6240 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-06  
<o:p></o:p>
事务处理的概念<o:p></o:p>

        所谓事务,就是一系列必须都 成功的操作,只要有一步操作失败,所有的其他的步骤将都 要撤销。<o:p></o:p>

Spring的事务处理<o:p></o:p>

        Spring有两种事务处理方式,编程式事务处理(programmatic transaction management)与声明式事务处理(declarative transaction management)<o:p></o:p>

        编程式事务处理比传统的JDBC事务有所改进,但是还是要实现具体方法。虽然有三种实现Spring编程式事务处理的方法,但其中都必须写入特定的代码,这样做一是代码量增加,DAO里面每个方法都加上那些必须要写上的代码那也是很烦人的,二是耦合度也提高了,哪天哪天不用SpringXX也说不定呀....-_-!<o:p></o:p>

        声明式事务处事,在DAO中你的对数据库操作的代码可以随意的写上,不用加任何其它代码,事务的处理交给SpringTransactionProxyFactoryBean来代为处理。

<o:p></o:p> xxDAO:

<o:p>
  1. .......   
  2. //对数据库的操作      
  3. public void update(String name,String password){      
  4.           //业务处理方法   
  5.           //update1();   
  6.           //update2();      
  7. }     
  8. ......   
 
</o:p>

Spring配置文件<o:p></o:p>

  1. <bean id="dataSource"  
  2.     class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  3.     <property name="driverClassName">  
  4.         <value>com.microsoft.jdbc.sqlserver.SQLServerDrivervalue>  
  5.     property>  
  6.     <property name="url">  
  7.         <value>jdbc:microsoft:sqlserver://localhost:1433/xxvalue>  
  8.     property>  
  9.     <property name="name">  
  10.         <value>usenamevalue>  
  11.     property>  
  12.     <!---->  
  13.     <property name="msg">  
  14.         <value>passwordvalue>  
  15.     property>  
  16. bean>  
  17. <bean id="transactionManager"  
  18.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  19.     <property name="dataSource">  
  20.         <ref bean="dataSource" />  
  21.     property>  
  22. bean>  
  23. <bean id="xxDAOProxy"  
  24.     class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  
  25.     <property name="transactionManager">  
  26.         <ref bean="transactionManager" />  
  27.     property>  
  28.     <property name="target">  
  29.         <ref bean="xxDAO" />  
  30.     property>  
  31.     <property name="transactionAttributes">  
  32.         <props>  
  33.             <prop key="update*">PROPAGATION_REQUIREDprop>  
  34.         props>  
  35.     property>  
  36. bean>  

还有一种配置文件的写法,更加的灵活点。

  1. <bean id="transactionInterceptor"  
  2.     class="org.springframework.transaction.interceptor.TransactionInterceptor">  
  3.     <property name="transactionManager">  
  4.         <ref bean="transactionManager" />  
  5.     property>  
  6.     <property name="transactionAttributeSource">  
  7.         <value>org.eyeqq.DAO.xxDAO.update*=PROPAGATION_REQUIREDvalue>  
  8.     property>  
  9. bean>  
  10. <bean id="xxDAOProxy"  
  11.     class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  
  12.     <property name="interceptorNames">  
  13.         <value>transactionInterceptor,xxDAOvalue>  
  14.     property>  
  15. bean>  

如果使用Hibernate的话那么我们的TransactionManager应该换成这样子。

xml 代码
  1. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">     
  2.     <property name="sessionFactory" ref="sessionFactory"/>            
  3. bean>       
  4.   
  5. id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">     
  6.     <property name="dataSource" ref="dataSource" />           
  7.     <property name="mappingResources">     
  8.         <list>     
  9.             <value>org.eyeqq.vo.userVO.hbm.xmlvalue>     
  10.         list>     
  11.     property>     
  12.     <property name="hibernateProperties">     
  13.         <props>     
  14.             <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialectprop>     
  15.             <prop key="hibernate.show_sql">trueprop>     
  16.         props>       
  17.     property>     
  18. bean>   

这样子,只要在service里面调用update方法,Spring就会自动给你完成事务的处理。

 

<o:p> 数据源那很简单看看就明白了....<o:p> </o:p></o:p>

 <o:p></o:p>

 

  1. <property name="target">     
  2.     <ref bean="xxDAO" />     
  3. property>     
  4. <property name="transactionAttributes">     
  5.     <props>     
  6.         <prop key="update*">PROPAGATION_REQUIREDprop>     
  7.     props>     
  8. property>  

target属性指定要被TransactionProxyFactoryBean代理处理事务的类为xxDAO<o:p></o:p>

transactionAttributes指定xxDAO中需要实现事务处理的方法。<o:p></o:p>

事务属性值:<o:p></o:p>

PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务。<o:p></o:p>

PROPAGATION_SUPPORTS:如果当前没有事务,就以非事务方式执行。<o:p></o:p>

PROPAGATION_MANDATORY:如果当前没有事务,就抛出异常。<o:p></o:p>

PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。<o:p></o:p>

PROPAGATION_NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,就把当前事务挂起。<o:p></o:p>

PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

在项目的时后可以做一个BaseService,在BaseService里做一些对数据库的通用操作,对BaseService做Spring的声明式事务处理,XML的配置是支持通配符的 <prop key="add*"></prop> PROPAGATION_REQUIRED,所以在项目的时后命名要作到统一命名。其它所有Service都继承这一个BaseService,这样其子Service Spring也能对其进行事务控制。

XML代码说明:
   发表时间:2007-10-29  
eyeqq 写道
<h5>&nbsp; <span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">学习资料</span><span style="FONT-FAMILY: Arial"><o:p></o:p></span></h5>
<div class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Spring</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">从入门到精通</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></div>
<div class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; justcode Spring</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">声明式事务处理视频</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></div>
<h5><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">事务处理的概念</span><span style="FONT-FAMILY: Arial"><o:p></o:p></span></h5>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">所谓事务,就是一系列必须都</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"> </span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">成功的操作,只要有一步操作失败,所有的其他的步骤将都</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"> </span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">要撤销。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
<h5><span style="FONT-FAMILY: Arial">Spring</span><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的事务处理</span><span style="FONT-FAMILY: Arial"><o:p></o:p></span></h5>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Spring</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">有两种事务处理方式,编程式事务处理</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">(programmatic transaction management)</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">与声明式事务处理</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">(declarative transaction management)</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">编程式事务处理比传统的</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">JDBC</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">事务有所改进,但是还是要实现具体方法。虽然有三种实现</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">Spring</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">编程式事务处理的方法,但其中都必须写入特定的代码,这样做一是代码量增加,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">DAO</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">里面每个方法都加上那些必须要写上的代码那也是很烦人的,二是耦合度也提高了,哪天哪天不用</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">Spring</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">用</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">XX</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">也说不定呀</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">....-_-!</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">声明式事务处事,在</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">DAO</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">中你的对数据库操作的代码可以随意的写上,不用加任何其它代码,事务的处理交给</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">Spring</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">TransactionProxyFactoryBean</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">来代为处理。</span></p>
<p class="MsoNormal"><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span>&nbsp;xxDAO:</p>
<span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>....... &nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="comment">//对数据库的操作&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;update(String&nbsp;name,String&nbsp;password){&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//业务处理方法 </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//update1(); </span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//update2();&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>}&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>...... &nbsp;&nbsp;</span> </li>
</ol>
</div>
<div class="code_title">&nbsp;</div>
</o:p>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">Spring</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">配置文件</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span> </p>
<span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;dataSource&quot;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.jdbc.datasource.DriverManagerDataSource&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;driverClassName&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>com.microsoft.jdbc.sqlserver.SQLServerDriver</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;url&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>jdbc:microsoft:sqlserver://localhost:1433/xx</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>usename</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments"><!-- 设定密码 --></span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;msg&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>password</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;transactionManager&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.jdbc.datasource.DataSourceTransactionManager&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;dataSource&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;dataSource&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;xxDAOProxy&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.transaction.interceptor.TransactionProxyFactoryBean&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;transactionManager&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;transactionManager&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;target&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;xxDAO&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;transactionAttributes&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;update*&quot;</span><span class="tag">&gt;</span><span>PROPAGATION_REQUIRED</span><span class="tag"><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p class="MsoNormal">还有一种配置文件的写法,更加的灵活点。</p>
<span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;transactionInterceptor&quot;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.transaction.interceptor.TransactionInterceptor&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;transactionManager&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;transactionManager&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;transactionAttributeSource&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>org.eyeqq.DAO.xxDAO.update*=PROPAGATION_REQUIRED</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;xxDAOProxy&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.transaction.interceptor.TransactionProxyFactoryBean&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;interceptorNames&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>transactionInterceptor,xxDAO</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>如果使用Hibernate的话那么我们的TransactionManager应该换成这样子。</p>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;transactionManager&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.orm.hibernate3.HibernateTransactionManager&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;sessionFactory&quot;</span><span>&nbsp;</span><span class="attribute">ref</span><span>=</span><span class="attribute-value">&quot;sessionFactory&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>n&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;sessionFactory&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.orm.hibernate3.LocalSessionFactoryBean&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;dataSource&quot;</span><span>&nbsp;</span><span class="attribute">ref</span><span>=</span><span class="attribute-value">&quot;dataSource&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;mappingResources&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>org.eyeqq.vo.userVO.hbm.xml</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hibernateProperties&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;hibernate.dialect&quot;</span><span class="tag">&gt;</span><span>org.hibernate.dialect.SQLServerDialect</span><span class="tag"><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;hibernate.show_sql&quot;</span><span class="tag">&gt;</span><span>true</span><span class="tag"><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span>&nbsp;
    <p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">target</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">属性指定要被</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">TransactionProxyFactoryBean</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">代理处理事务的类为</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">xxDAO</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
    <p class="MsoNormal"><span class="tag2"><span class="tag2"><span dir="ltr"><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">transactionAttributes指定</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">xxDAO</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">中需要实现事务处理的方法。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></span></span></span></p>
    <p class="MsoNormal"><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">事务属性值:</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
    <p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">PROPAGATION_REQUIRED</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">:如果当前没有事务,就新建一个事务。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
    <p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">PROPAGATION_SUPPORTS</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">:如果当前没有事务,就以非事务方式执行。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
    <p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">PROPAGATION_MANDATORY</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">:如果当前没有事务,就抛出异常。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
    <p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">PROPAGATION_REQUIRES_NEW</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">:新建事务,如果当前存在事务,把当前事务挂起。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
    <p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">PROPAGATION_NOT_SUPPORTED</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">:以非事务的方式执行操作,如果当前存在事务,就把当前事务挂起。</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p></o:p></span></p>
    <p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">PROPAGATION_NEVER</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">:以非事务方式执行,如果当前存在事务,则抛出异常。</span></p>
    <p class="MsoNormal"><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><strong>项目经验</strong></span></p>
    <p class="MsoNormal"><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">在项目的时后可以做一个BaseService,在BaseService里做一些对数据库的通用操作,对BaseService做Spring的声明式事务处理,XML的配置是支持通配符的<font face="Arial">&lt;prop key=&quot;add*&quot;&gt;PROPAGATION_REQUIRED&lt;/prop&gt;,所以在项目的时后命名要作到统一命名。其它所有Service都继承这一个BaseService,这样其子Service Spring也能对其进行事务控制。</font></span></p>
    </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>这样子,只要在<span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">service</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">里面调用</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">update</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">方法,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">Spring</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">就会自动给你完成事务的处理。</span></p>
<h5><span style="FONT-FAMILY: Arial">XML</span><span lang="ZH-CN" style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">代码说明:</span><span style="FONT-FAMILY: Arial"><o:p></o:p></span></h5>
<p class="MsoNormal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">&nbsp;</span><span lang="ZH-CN" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">数据源那很简单看看就明白了</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial">....</span></p>
<span style="FONT-SIZE: 9pt; FONT-FAMILY: Arial"><o:p>
<div class="code_title">
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;target&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;xxDAO&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;transactionAttributes&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;update*&quot;</span><span class="tag">&gt;</span><span>PROPAGATION_REQUIRED</span><span class="tag"><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
</div>
</o:p></span></span></span></span>
写的不错,请问朋友,我们能不能交流一下,我有些东西想和你探讨
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics