Spring mvc注解方式使用事务回滚

时间:2021-06-28 10:27:32

项目名:1ma1ma

jdbc.xml

<bean  id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" 

           p:driverClassName="${jdbc.driverClassName}"

           p:url="${jdbc.url}"

           p:username="${jdbc.username}"

           p:password="${jdbc.password}"

           p:maxActive="${jdbc.pool-size}"

           p:minEvictableIdleTimeMillis="600000" p:timeBetweenEvictionRunsMillis="900000"

           p:removeAbandoned="true" p:logAbandoned="true" p:removeAbandonedTimeout="120"

           p:maxWait="5000"

    />

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  

        <property name="dataSource">  

            <ref local="dataSource" />  

        </property>  

    </bean>  

    <tx:annotation-driven transaction-manager="transactionManager" />

    <context:component-scan base-package="com.yaoma.*">   

        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />   

    </context:component-scan>

servlet-context.xml

<context:component-scan base-package="com.yaoma.*" >   

        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />   

        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />    

    </context:component-scan>

@Transactional

    public int delete(String IMGroupID, String userid) throws Exception {

        //依照IMGroupID和userid更新相应的Groups表内容

        int is_return = Groups_Dao.IsDeleted_Groups(IMGroupID, userid, 0);

        if (is_return == 0) {

            throw new RuntimeException("is_return is 0;");

        }





        //去环信上删除相应的数据

        String hx_return = HX_Service.delete_group(IMGroupID);

        if (hx_return == null) {

            throw new RuntimeException("hx_return is null");

        }

        return Integer.parseInt(hx_return);

    }

@Transactional注解标签

由于在执行中,所以使用RuntimeException进行异常抛出,类中不能使用try捕捉异常,直接throws Exception抛出异常

如执行时使用Exception抛出异常,则回滚无效