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

作者:lqh 时间:2021-05-25 03:11:19 

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,就是本题的原因了。

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

来源:http://blog.csdn.net/u013762572/article/details/44429171

标签:java.lang, NoSuchMethodException
0
投稿

猜你喜欢

  • Java 中Timer和TimerTask 定时器和定时任务使用的例子

    2022-04-21 17:50:27
  • mybatis-plus QueryWrapper自定义查询条件的实现

    2023-04-05 20:50:07
  • java中timer的schedule和scheduleAtFixedRate方法区别详解

    2023-05-25 10:47:45
  • Spring中AOP概念与两种动态代理模式原理详解

    2023-04-13 01:21:54
  • Android实现信息弹出框

    2023-04-20 06:27:40
  • SpringBoot如何优雅地处理全局异常详解

    2023-01-06 04:30:19
  • Android 使用Shell脚本截屏并自动传到电脑上

    2022-07-06 01:21:43
  • Java实现两人五子棋游戏(二) 画出棋盘

    2022-08-26 15:09:57
  • Java编程将汉字转Unicode码代码示例

    2023-11-09 17:33:39
  • 应用启动数据初始化接口CommandLineRunner和Application详解

    2023-02-06 05:00:33
  • javafx实现时钟效果

    2022-09-10 02:23:31
  • Android利用二阶贝塞尔曲线实现添加购物车动画详解

    2022-03-01 09:49:49
  • (starters)springboot-starter整合阿里云datahub方式

    2023-03-12 06:28:16
  • android RecyclerView侧滑菜单,滑动删除,长按拖拽,下拉刷新上拉加载

    2022-01-31 12:20:46
  • Jmeter测试必知的名词及环境搭建

    2022-11-23 19:34:07
  • Android ListView ImageView实现单选按钮实例

    2023-09-19 20:25:39
  • 使用Android Studio检测内存泄露(LeakCanary)

    2022-08-31 11:08:12
  • Java集合之Set接口及其实现类精解

    2022-01-23 17:27:44
  • Android Path绘制贝塞尔曲线实现QQ拖拽泡泡

    2023-03-16 07:57:24
  • Idea jdk版本问题解决方案

    2022-04-14 11:57:41
  • asp之家 软件编程 m.aspxhome.com