java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list錯(cuò)誤解決辦法
java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list錯(cuò)誤解決辦法
玩web的SSH總會(huì)有些令你意想不到的exception,這里其中有很多事自己不小心,或者馬虎所造成。因此,解決的方案會(huì)各有不同,別人出現(xiàn)的異常解決方案對(duì)你的可能無效,就像上面的我報(bào)的異常一樣,百度了很多很多次,給我的答案無非就是在aop上加上一句,但是非常抱歉,我加上去無效!所以還是那句話,對(duì)于自己的異常,還是要自己解決。
首先說明一下,我這次的練習(xí)的ssh結(jié)構(gòu)和異常所報(bào)的原因。
用的框架式struts2.2+hibernate4.2+spring4.0,容器室tomcat7.0.在Action中,我寫了一個(gè)基類BaseAction,繼承了ActionSupport,實(shí)現(xiàn)了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 ; } }
這樣做的好處是,每個(gè)組件對(duì)應(yīng)的Action中只需要告訴BaseAction自己要實(shí)現(xiàn)的泛型,然后只需要完成自己的邏輯。對(duì)于每個(gè)Action要實(shí)現(xiàn)ActionSupport來講,這是一項(xiàng)基本的且容易想到的方案。
然后,在每個(gè)Action中調(diào)用service組件實(shí)現(xiàn)自己的功能,在每個(gè)Action中都使用了@Component(“departmentAction”),@Scope(“prototype”)注解,但是練習(xí)一測(cè)試,就會(huì)出現(xiàn)Java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list()異常,檢查之后發(fā)現(xiàn),原因是:
BaseAction是抽象的,在上面加了@Transactional是沒有意義的,
而@Transactional就是有spring管理,spring管理的對(duì)象要生成代理,而對(duì)于一個(gè)抽象的類,是不能被new成對(duì)象的,只有一個(gè)抽象類的具體實(shí)現(xiàn)類才有可能是被spring代理。
所以,去掉BaseAction上面的@Transactional,就是本題的原因了。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Java兩個(gè)乒乓球隊(duì)比賽名單問題(判斷素?cái)?shù))
兩個(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決定比賽名單。有人向隊(duì)員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請(qǐng)編程序找出三隊(duì)賽手的名單2017-02-02Springboot整合第三方登錄功能的實(shí)現(xiàn)示例
本文主要介紹了Springboot整合第三方登錄功能的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Java的鎖機(jī)制:synchronized和CAS詳解
這篇文章主要介紹了Java的鎖機(jī)制synchronized和CAS詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09Spring Boot通過Redis實(shí)現(xiàn)防止重復(fù)提交
表單提交是一個(gè)非常常見的功能,如果不加控制,容易因?yàn)橛脩舻恼`操作或網(wǎng)絡(luò)延遲導(dǎo)致同一請(qǐng)求被發(fā)送多次,本文主要介紹了Spring Boot通過Redis實(shí)現(xiàn)防止重復(fù)提交,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06elasticsearch分布式及數(shù)據(jù)的功能源碼分析
這篇文章主要為大家介紹了elasticsearch分布式及數(shù)據(jù)功能源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04SpringMVC自定義參數(shù)綁定實(shí)現(xiàn)詳解
這篇文章主要介紹了SpringMVC自定義參數(shù)綁定實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11解決Java壓縮zip異常java.util.zip.ZipException:duplicate entry
這篇文章主要介紹了解決Java壓縮zip異常java.util.zip.ZipException:duplicate entry:問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12