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

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之类的属性配置

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!