Spring 如何在Mybatis项目中实现事务管理

Spring 如何在Mybatis项目中实现事务管理,spring,jax-rs,mybatis,Spring,Jax Rs,Mybatis,我目前正在从事一个已经实施mybatis的项目。 因为这是一个遗留代码,所以实现是使用 弹簧 Mybatis JAxrs Spring应用程序上下文文件 <bean id="sqlSessionFactory" class="com.ca.aa.ui.framework.common.mybatis.SqlSessionFactoryBeanWrapper"> <property name="dataSource" ref="dataSource

我目前正在从事一个已经实施mybatis的项目。 因为这是一个遗留代码,所以实现是使用

  • 弹簧
  • Mybatis
  • JAxrs
  • Spring应用程序上下文文件

        <bean id="sqlSessionFactory"         class="com.ca.aa.ui.framework.common.mybatis.SqlSessionFactoryBeanWrapper">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath*:ibatis/*_mapper.xml" />
    
    </bean>
    

    如何在这里实现事务管理器,请提供帮助?

    有很多方法可以实现这一点,特别是考虑到您已经配置了spring。基本上,您需要配置两件事

  • 事务管理器
  • 交易边界
  • 事务管理器

    您需要在spring上下文中定义。根据
    sqlSessionFactory
    中提到的
    dataSource
    的位置,定义可能会有所不同。最有可能的情况是,您在项目中使用了连接池,即您对某些连接池进行了如下配置:

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
        destroy-method="close">
       <property name="driverClassName" value="${jdbc.driverClassName}" />
       <property name="url" value="${jdbc.url}" />
       <property name="username" value="${jdbc.username}" />
       <property name="password" value="${jdbc.password}" />
    </bean> 
    
    public interface TenantDAO {
    
    public List<something> somemethod1();
    
    }
    
    <bean id="issuerService" class="com.ca.ias.admin.service.IssuerServiceImpl">
        <property name="tenantDAO" ref="tenantDAO"/>
    </bean>
    
    public void insert(){
    
    try{
       tenantDao.insert();
    }catch(Exception e){
    
    }finally{
    
    }
    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
        destroy-method="close">
       <property name="driverClassName" value="${jdbc.driverClassName}" />
       <property name="url" value="${jdbc.url}" />
       <property name="username" value="${jdbc.username}" />
       <property name="password" value="${jdbc.password}" />
    </bean> 
    
    <bean id="txManager" 
         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource"/>
    </bean>
    
    <tx:annotation-driven transaction-manager="txManager"/>
    
    @Transactional
    public void insert(){
    
    }
    
    @Transactional(readOnly=true)
    public void find(){
    
    }