首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring @Controller和Transactionmanager

Spring @Controller和Transactionmanager
EN

Stack Overflow用户
提问于 2010-06-25 00:02:58
回答 1查看 2.5K关注 0票数 1

我有一个基本的Spring控制器

代码语言:javascript
复制
package org.foo;

@Controller
public class HelloWorldController implements IHelloWorldController
{
   @RequestMapping(value = "/b/c/", method = RequestMethod.GET)
   public void doCriticalStuff(HttpServletRequest request, HttpServletResponse response){
      //...
   }
}

通过curl -X GET http://myIP:myPort/b/c/进行了测试,运行良好。

如果我通过以下方式配置事务管理

代码语言:javascript
复制
<bean id="txManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
        <tx:method name="*" />
    </tx:attributes>
</tx:advice>
<aop:config>
    <aop:pointcut id="helloWorldPC"
        expression="execution(* org.foo.IHelloWorldController.*(..)) &amp;&amp; !execution(* java.lang.Object.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="helloWorldPC" />
</aop:config>

映射不再起作用。我得到一个404错误在客户端和服务器上的方法没有进入。在doCriticalStuff中使用断点进行JUnit测试时,我可以看到AopUtils.invokeJoinpointUsingReflection(Object, Method, Object[]) line: ...,因此使用了事务配置。

但是映射不再起作用了。有什么想法吗?

我使用的是Spring 3.0.2.RELEASE

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-25 00:38:32

事务性方面是使用dynamic proxy应用的,它阻止Spring MVC访问目标类上的@RequestMapping注释。您可以使用<aop:config proxy-target-class="true">作为解决方法。

Spring团队表示,出于效率的原因,他们不会修复这种行为(参见comment on SPR-5084)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3111698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档