java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法

 更新时间:2016年12月12日 11:03:04   投稿:lqh  
这篇文章主要介绍了java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法的相关资料,需要的朋友可以参考下

java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法

玩web的SSH总会有些令你意想不到的exception,这里其中有很多事自己不小心,或者马虎所造成。因此,解决的方案会各有不同,别人出现的异常解决方案对你的可能无效,就像上面的我报的异常一样,百度了很多很多次,给我的答案无非就是在aop上加上一句,但是非常抱歉,我加上去无效!所以还是那句话,对于自己的异常,还是要自己解决。

首先说明一下,我这次的练习的ssh结构和异常所报的原因。

用的框架式struts2.2+hibernate4.2+spring4.0,容器室tomcat7.0.在Action中,我写了一个基类BaseAction,继承了ActionSupport,实现了ModelDriven接口,代码如下:

----------
@Component
@Transactional
----------
public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T> {
  private static final long serialVersionUID = 2719688501307297741L;
  @Resource(name = "roleServiceImpl")
  protected RoleService roleService;
  @Resource(name = "departmentService")
  protected DepartmentService departmentService;
  @Resource(name = "userService")
  protected UserService userService;

  protected T model;

  public BaseAction() {
    ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
    @SuppressWarnings("unchecked")
    Class<T> clazz = (Class<T>) pt.getActualTypeArguments()[0];
    try {
      model = clazz.newInstance();
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }
  public T getModel() {
    return model ;
  }
}

这样做的好处是,每个组件对应的Action中只需要告诉BaseAction自己要实现的泛型,然后只需要完成自己的逻辑。对于每个Action要实现ActionSupport来讲,这是一项基本的且容易想到的方案。

然后,在每个Action中调用service组件实现自己的功能,在每个Action中都使用了@Component(“departmentAction”),@Scope(“prototype”)注解,但是练习一测试,就会出现Java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list()异常,检查之后发现,原因是:

BaseAction是抽象的,在上面加了@Transactional是没有意义的,

而@Transactional就是有spring管理,spring管理的对象要生成代理,而对于一个抽象的类,是不能被new成对象的,只有一个抽象类的具体实现类才有可能是被spring代理。

所以,去掉BaseAction上面的@Transactional,就是本题的原因了。

  感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • RocketMQ4.5.2 修改mqnamesrv 和 mqbroker的日志路径操作

    RocketMQ4.5.2 修改mqnamesrv 和 mqbroker的日志路径操作

    这篇文章主要介绍了RocketMQ 4.5.2 修改mqnamesrv 和 mqbroker的日志路径操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • InteliJ IDEA 设置eclipse快捷键 的图文教程

    InteliJ IDEA 设置eclipse快捷键 的图文教程

    本文通过图文并茂的形式给大家介绍了InteliJ IDEA 设置eclipse快捷键 ,非常不错,具有一定的参考借鉴价值,需要的朋友参考下
    2018-06-06
  • jetty运行时无法保存文件的解决方法

    jetty运行时无法保存文件的解决方法

    这篇文章主要为大家详细介绍了jetty运行时无法保存文件的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • java实现2048小游戏(含注释)

    java实现2048小游戏(含注释)

    这篇文章主要为大家介绍了java实现2048小游戏,含详细注释,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • spring boot自带图片服务器使用详解

    spring boot自带图片服务器使用详解

    这篇文章主要为大家详细介绍了spring boot自带图片服务器的使用 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • java JVM-clinit指令实现原理面试精讲

    java JVM-clinit指令实现原理面试精讲

    这篇文章主要介绍了java JVM-clinit指令实现原理面试精讲,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • SpringBoot启动时运行特定代码的多种方式小结

    SpringBoot启动时运行特定代码的多种方式小结

    SpringBoot提供了多种方式在应用程序启动时运行特定的代码,包括CommandLineRunner、ApplicationRunner、@PostConstruct、InitializingBean、事件机制和自定义注解等,下面就来具体介绍一下
    2025-01-01
  • Java获取一个类的隐藏属性的几种方法

    Java获取一个类的隐藏属性的几种方法

    这篇文章主要讨论了在Java中如何访问或修改类的私有字段,包括使用公共的getter和setter方法、反射、继承和序列化机制,文章强调了尊重类的封装性,感兴趣的小伙伴跟着小编一起来看看吧
    2025-02-02
  • Java并发编程创建并运行线程的方法对比

    Java并发编程创建并运行线程的方法对比

    这篇文章主要为大家详细介绍了Java并发编程创建并运行线程的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java语言实现非递归实现树的前中后序遍历总结

    Java语言实现非递归实现树的前中后序遍历总结

    今天小编就为大家分享一篇关于Java语言实现非递归实现树的前中后序遍历总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01

最新评论