java.lang.nosuchmethodexception: com.sun.proxy. $ proxy58.list error solución
Siempre hay algunas excepciones inesperadas cuando se reproduce SSH en la web. Hay muchas cosas que no eres cuidadoso o descuidado. Por lo tanto, las soluciones serán diferentes. Las soluciones que otros han encontrado pueden ser inválidas para usted. Al igual que la excepción que informé anteriormente, he estado usando Baidu muchas veces, y la respuesta que me di no es más que agregar una oración a AOP, pero lo siento mucho, ¡lo agregué a los inválidos! Entonces, lo mismo es cierto, todavía tienes que resolver tu propia anormalidad.
Primero, permítanme explicar la estructura SSH y las razones de la excepción en mi práctica esta vez.
Los Struts de tipo marco2.2+Hibernate4.2+Spring4.0, Room Tomcat7.0. En acción, escribí una base de base de clase base, heredé acciones de apoyo e implementé la interfaz ModelDriven. El código es el siguiente:
----------@componente@transaccional ---------- Class abstract de basados <t> extiende acciones. @Resource (name = "RoleserViceImpl") Roleservice de roles de servicio protegido; @Resource (name = "Departmentservice") Propartidos de Departamentos Protegidos Departamentos de Departamentos; @Resource (name = "UserService") Protegido UserService UserService; modelo t protegido; public Baseaction () {ParameterizedType Pt = (ParameterizedType) this.getClass (). GetGenericsuperClass (); @SupessWarnings ("Unchecked") clase <T> CLAZZ = (CLASE <T>) PT.GETACTUALTYPEArGUMES () [0]; intente {model = clazz.newinstance (); } catch (Exception e) {Throw New RuntimeException (e); }} public t getModel () {modelo de retorno; }} La ventaja de esto es que la acción correspondiente de cada componente solo necesita decirle a Baseaction los genéricos para implementar, y luego solo necesita completar su propia lógica. Para cada acción para implementar acciones de apoyo, esta es una solución básica y fácil de pensar.
Luego, en cada acción, se llama al componente de servicio para implementar sus propias funciones. En cada acción, se utilizan anotaciones @Component ("departamentation") y @Scope ("prototipo"). Sin embargo, una vez que practique la prueba, aparecerá una excepción java.lang.nosuchmethodexception: com.sun.proxy. $ Proxy58.list (). Después de verificar, se encuentra que la razón es:
Baseaction es abstracta, no tiene sentido agregarle @Transactional.
@Transactional es administrado por Spring. Los objetos administrados por la primavera deben generarse como agentes. Para una clase abstracta, no puede ser nuevo en un objeto. Solo la clase de implementación concreta de una clase abstracta puede ser indicada por Spring.
Por lo tanto, eliminar el @Transactional on Baseaction es la razón de esta pregunta.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!