spring中的事务拦截器

  <!-- 配置事务拦截器-->    
    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">    
            <property name="transactionManager">     
                  <ref bean="txManager" />    
           </property>   
          
           
 <!-- 配置事务属性 --> 
       <property name="transactionAttributes">    
          <props>    
            <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>    
            <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
            <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>   
            <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>    
            <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
            <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
            <prop key="create*">PROPAGATION_REQUIRED,-Exception</prop>
          </props>    
       </property>    
     </bean>    
   <bean id="txProxy"   
         class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">    
        <property name="beanNames">    
          <list>        
             <value>*Service</value>
          </list>    
        </property>    
        <property name="interceptorNames">    
          <list>    
             <value>transactionInterceptor</value>    
          </list>    
        </property>    
   </bean> 

 

我个人理解:

在spring里配置事务,将事务的处理提至(推后)到service层进行处理,这样做的好处在于:dao层处理的只是单个的数据操作,而service业务层一般才是真正的有一个完整的操作,即事务。

(1)在上面的语句:<value>*Service</value> ,可以使所有以Service结尾的类使用事务拦截器,这些类中的不同方法使用不同的拦截策略。比如add开始的方法,使用策略:PROPAGATION_REQUIRED,-Exception,query开始的方法,使用策略:PROPAGATION_REQUIRED,readOnly。所以在query开头的方法中,不能调用增加、修改的方法。

例如:testService类中的queryPerson()方法中不能有下面的代码:

         resultList=baseSalaryDao.querySalaryParams(baseNumber, start, limit);
             if(resultList.size()==0){//如果数据库当中没有该基地日工资记录,则注入一条日工资为空的记录
              BaseSalary baseSalary=new BaseSalary();
              baseSalary.setBaseNumber(baseNumber);
              baseSalaryDao.save(baseSalary);}//不能有保存的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值