好几天的困惑,这个问题终于解决。
以下这行是控制spring用注释来进行事务的。
[quote] <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />[/quote]
关键在于这行必须放在<servlet-name>mvc-dispatcher</servlet-name>下的spring指定配置文件中。这样serivce实现类就可以先被CglibAopProxy代理了。
而不能放在<context-param>指定目录下。
web.xml
[quote]<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>[/quote]
他们的原理和区别
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
以下这行是控制spring用注释来进行事务的。
[quote] <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />[/quote]
关键在于这行必须放在<servlet-name>mvc-dispatcher</servlet-name>下的spring指定配置文件中。这样serivce实现类就可以先被CglibAopProxy代理了。
而不能放在<context-param>指定目录下。
web.xml
[quote]<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>[/quote]
他们的原理和区别
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