日期:2014-05-16  浏览次数:20451 次

spring mybatis 事务问题解决
好几天的困惑,这个问题终于解决。

以下这行是控制spring用注释来进行事务的。
引用
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />


关键在于这行必须放在<servlet-name>mvc-dispatcher</servlet-name>下的spring指定配置文件中。这样serivce实现类就可以先被CglibAopProxy代理了。
而不能放在<context-param>指定目录下。

web.xml
引用
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/*.xml
</param-value>
</context-param>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/mvc/*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>



他们的原理和区别
context-param和init-param区别
web.xml里面可以定义两种参数:
(1)application范围内的参数,存放在servletcontext中,在web.xml中配置如下:
<context-param>
           <param-name>context/param</param-name>
           <param-value>avalible during application</param-value>
</context-param>

(2)servlet范围内的参数,只能在servlet的init()方法中取得

参考原文http://www.cnblogs.com/hzj-/articles/1689836.html