java.lang.nosuchmethodexception : com.sun.proxy. $ proxy58.list 오류 솔루션
웹에서 SSH를 재생할 때 항상 예상치 못한 예외가 있습니다. 당신이 조심 스럽거나 부주의하지 않은 것들이 많이 있습니다. 따라서 솔루션은 다릅니다. 다른 사람들이 만난 솔루션은 귀하에게 유효하지 않을 수 있습니다. 내가 위에서보고 한 예외와 마찬가지로, 나는 Baidu를 여러 번 사용하고 있었고, 내가 준 대답은 AOP에 문장을 추가하는 것 이상이지만 매우 죄송합니다. 따라서 똑같은 것이 사실입니다. 당신은 여전히 자신의 이상을 해결해야합니다.
먼저, 이번에는 SSH 구조와 예외의 이유를 설명하겠습니다.
프레임 워크-타입 스트럿 2.2+hibernate4.2+spring4.0, 컨테이너 룸 tomcat7.0. 실제로, 나는 기본 클래스 바지 반응을 작성하고, 상속 된 ActionSupport를, ModelDriven 인터페이스를 구현했습니다. 코드는 다음과 같습니다.
-----------@component@transactional ---------- 공개 초록 클래스 Baseaction <T> 확장 ActionSupport Amplements ModelDriven <T> {Private Static Final Long SerialVersionUid = 2719688501307297741L; @Resource (name = "roleserviceimpl") 보호 된 RoleService RobleService; @Resource (이름 = "DepartmentService") 보호 된 DepartmentsErvice DepartmentService; @Resource (name = "usererVice") 보호 된 userErvice userErvice; 보호 된 T 모델; public baseaction () {parameterizedtype pt = (ParameterizedType) this.getClass (). getGenericSuperClass (); @suppresswarnings ( "선택 취소") 클래스 <t> clazz = (class <t>) pt.getActualTyPearguments () [0]; try {model = clazz.newinstance (); } catch (예외 e) {throw new runtimeexception (e); }} public t getModel () {반환 모델; }} 이점의 장점은 각 구성 요소의 해당 동작이 제네릭을 구현할 제네릭을 지시하면 자체 논리 만 완료하면됩니다. 각 동작이 ActionSupport를 구현하려면 기본적이고 생각하기 쉬운 솔루션입니다.
그런 다음 각 작업에서 서비스 구성 요소는 자체 기능을 구현하도록 호출됩니다. 각 동작에서 @Component ( "DepartmentAction") 및 @Scope ( "프로토 타입") 주석이 사용됩니다. 그러나 일단 테스트를 수행하면 java.lang.nosuchmethodexception : com.sun.proxy. $ proxy58.list () 예외가 나타납니다. 확인 후 그 이유는 다음과 같습니다.
Baseection은 추상적이며 @transactional을 추가하는 것은 의미가 없습니다.
@transactional은 Spring에서 관리합니다. 스프링이 관리하는 물체는 에이전트로 생성되어야합니다. 추상적 인 클래스의 경우, 그것은 객체에 새로 생길 수 없습니다. 추상 클래스의 구체적인 구현 클래스 만 스프링에 의해 근접 할 수 있습니다.
따라서 Baseection에서 @transactional을 제거하는 것이이 질문의 이유입니다.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!