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,就是本题的原因了。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
深度deepin安装以及jdk、tomcat、Nginx安装教程
这篇文章主要给大家介绍了关于深度deepin安装以及jdk、tomcat、Nginx安装的相关资料,按照文中介绍的方法可以轻松的实现安装,对大家的工作具有一定的参考借鉴价值,需要的朋友可以参考下2024-01-01Spring Boot 集成Shiro的多realm实现以及shiro基本入门教程
这篇文章主要介绍了Spring Boot 集成Shiro的多realm实现以及shiro基本入门,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-10-10struts1之ActionServlet详解_动力节点Java学院整理
这篇文章主要介绍了struts1之ActionServlet详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-09-09java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
java中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法(希尔排序(Shell Sort)是插入排序的一种),下面是一些示例,需要的朋友可以参考下2014-03-03
最新评论