配置事务,在controller层以注解的方式。@Transactional 
不回滚。
修改配置文件,出现异常,实在不止如何解决。请各位同道中人搭把手!啊

解决方案 »

  1.   

    下面是我的一个配置文件,ApplicationContext.xml代码<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/mvc  
                            http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
                      "

    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    >

    <!-- 启用注解 -->
    <context:annotation-config />

    <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 -->
    <context:component-scan base-package="com.cvicse">
    <context:exclude-filter type="annotation"
    expression="org.springframework.stereotype.Controller" />
    </context:component-scan>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
         <property name="dataSource" ref="dataSource"></property>
      </bean>
       
     
     
    <!-- jdbcTemplate -->
    <bean id="jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 基于jdbcTemplate的自定义Dao -->
    <bean id="sql" class="com.cvicse.util.jdbc.Sql" init-method="initSql">
    <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    <property name="locations">  
    <list>  
                     <value>/WEB-INF/classes/dbconfig.properties</value>  
                </list>  
            </property>  
    </bean> 

    <!-- 阿里 druid数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">  
             <!-- 数据库基本信息配置 -->
             <property name="url" value="${url}" />  
             <property name="username" value="${username}" />  
             <property name="password" value="${password}" />  
             <property name="driverClassName" value="${driverClassName}" />  
             <property name="filters" value="${filters}" />  
         <!-- 最大并发连接数 -->
             <property name="maxActive" value="${maxActive}" />
             <!-- 初始化连接数量 -->
             <property name="initialSize" value="${initialSize}" />
             <!-- 配置获取连接等待超时的时间 -->
             <property name="maxWait" value="${maxWait}" />
             <!-- 最小空闲连接数 -->
             <property name="minIdle" value="${minIdle}" />  
         <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
             <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
             <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
             <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />  
             <property name="validationQuery" value="${validationQuery}" />  
             <property name="testWhileIdle" value="${testWhileIdle}" />  
             <property name="testOnBorrow" value="${testOnBorrow}" />  
             <property name="testOnReturn" value="${testOnReturn}" />  
             <property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}" />
             <!-- 打开removeAbandoned功能 -->
             <property name="removeAbandoned" value="${removeAbandoned}" />
             <!-- 1800秒,也就是30分钟 -->
             <property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}" />
             <!-- 关闭abanded连接时输出错误日志 -->   
             <property name="logAbandoned" value="${logAbandoned}" />
    </bean>  
         <!-- 2016.11.04 start-->
      <tx:annotation-driven transaction-manager="transactionManager" />
         <!-- 2016.11.04 end -->


    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    <tx:method name="delete*" propagation="REQUIRED" read-only="false" 
               rollback-for="java.lang.Exception"/>
    <tx:method name="insert*" propagation="REQUIRED" read-only="false" 
               rollback-for="java.lang.Exception" />
    <tx:method name="update*" propagation="REQUIRED" read-only="false" 
               rollback-for="java.lang.Exception" />
    <tx:method name="save*" propagation="REQUIRED" read-only="false" 
               rollback-for="java.lang.Exception" />
    </tx:attributes>
    </tx:advice>

    <aop:aspectj-autoproxy proxy-target-class="true"/>

    <!-- 事物处理 -->
    <aop:config>
    <aop:pointcut id="pc" expression="execution(* com.cvicse.wcms.service..*(..))" />
    <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" />
    <aop:advisor pointcut-ref="pc" advice-ref="tx:annotation-driven" />
    </aop:config>

    <!-- 配置mybatis -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
         <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
            <!-- mapper扫描 -->
            <property name="mapperLocations" value="classpath:mybatis/*/*.xml"></property>
        </bean>
        
        <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg ref="sqlSessionFactory" />
    </bean>

    <!-- ================ Shiro start ================ -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="realm" ref="ShiroRealm" />
    </bean>

    <!-- 項目自定义的Realm -->
        <bean id="ShiroRealm" class="com.cvicse.interceptor.shiro.ShiroRealm" ></bean>

    <!-- Shiro Filter -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
    <property name="securityManager" ref="securityManager" />

    <property name="loginUrl" value="/" />

    <property name="successUrl" value="/main/index" />

    <property name="unauthorizedUrl" value="/login_toLogin" />

    <property name="filterChainDefinitions">
    <value>
    /download.html  = anon 
    /static/rec/click_to_install.msi  = anon 
    /static/rec/Chrome.exe = anon 
    /static/login/**  = anon
    /static/js/myjs/**  = authc
    /static/js/**  = anon
    /uploadFiles/uploadImgs/**  = anon
                /code.do  = anon
                /login_login   = anon
                /login2   = anon
                /singleSignOn   = anon
                /traininguser_login   = anon
                /inspectInterface/getInspectCount.do  = anon
                /inspectInterface/getUserInfo.do  = anon
                /inspectInterface/getInspectList.do  = anon
                /inspectInterface/getInspectListApp.do  = anon
                /inspectInterface/getInspectTeamApp.do  = anon
                /inspectInterface/getInspectAllParentApp.do  = anon
                /filerules/goFilePreviewHome.do   = anon
                /notice/goFilePreviewHome.do   = anon
                /meetingrecord/goFilePreviewHome.do   = anon
                /app**/**  = anon
                /weixin/**  = anon
                /static/css/bg.jpg =anon
                /static/css/logo3.png =anon
                /** = authc
    </value>
    </property>
    </bean>
    <!-- ================ Shiro end ================ -->

       
    </beans>
      

  2.   

    下面是我另一个配置文件ApplicationContext-mvc.xml的源码<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:aop="http://www.springframework.org/schema/aop "
    xmlns:tx="http://www.springframework.org/schema/tx "

    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd

            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx.xsd 
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd 
    "> <mvc:annotation-driven />
    <mvc:default-servlet-handler /> <context:component-scan base-package="com.cvicse.wcms.controller" />
    <context:component-scan base-package="com.json" />

    <context:component-scan base-package="com.cvicse">
    <context:exclude-filter type="annotation"
    expression="org.springframework.stereotype.Service" />
    </context:component-scan> <!-- 对静态资源文件的访问 restful -->
    <mvc:resources mapping="/admin/**" location="/,/admin/" />
    <mvc:resources mapping="/static/**" location="/,/static/" />
    <mvc:resources mapping="/plugins/**" location="/,/plugins/" />
    <mvc:resources mapping="/uploadFiles/**" location="/,/uploadFiles/" /> <!-- 访问拦截 -->
    <mvc:interceptors>
    <mvc:interceptor>
    <mvc:mapping path="/**/**" />
    <bean class="com.cvicse.interceptor.LoginHandlerInterceptor" />
    </mvc:interceptor>
    </mvc:interceptors> <!-- 配置SpringMVC的视图解析器 -->
    <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
    </bean> <bean id="exceptionResolver" class="com.cvicse.resolver.MyExceptionResolver"></bean>
    <!-- 上传拦截,如最大上传值及最小上传值 -->
    <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize">
    <value>104857600</value>
    </property>
    <property name="maxInMemorySize">
    <value>4096</value>
    </property>
    <property name="defaultEncoding">
    <value>utf-8</value>
    </property>
    </bean></beans>
      

  3.   

    http://blog.csdn.net/quwenzhe/article/details/60308999?foxhandler=RssReadRenderProcessHandler
      

  4.   

    http://www.jianshu.com/p/61e8961c6154