iteye_10987
2009-08-14 13:23
浏览 378
已采纳

struts的Action中使用spring的@Transactional注解事务出错

使用spring的注解式事务配置, 在action的方法中直接使用事务遇到的问题.

例如: 在testAction 中有两个方法


public class testAction extends BaseAction{
@Transactional
public String test1() throws Exception {
dosomething();
}

public String test2() throws Exception {
dosomething();
}
}


struts.xml配置

<action name="test_*" class="testAction" method="{1}">
<result>test.ftl</result>
</action>

只要在上例testAction两个方法任意一个加上@Transactional注解, 用test_test1.do访问时就会报错java.lang.NoSuchMethodException: $Proxy9.test1().
访问未配置@Transactional的方法也一样, 例如test_test2.do也会一样报错java.lang.NoSuchMethodException: $Proxy9.test2(). 
大概知道是因为配置事务后产生代理, 但是为什么产生的代理实例会找不到方法??
问题补充
呵呵, 多谢楼上的回复, 确实是这样. 配置proxy-target-class="true"就行了, 非常感谢...
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • iteye_2966 2009-08-14 13:23
    已采纳

    应该是spring默认采用了JDK动态代理来实现事务的吧, 这时候代理的是接口, 而你的两个方法都不是接口方法
    可以改成代理到类, 依稀记得有一个叫targetClass之类的属性配置

    点赞 打赏 评论

相关推荐 更多相似问题