java.lang.nosuchmethodException: com.sun.proxy. $ proxy58.list Solução de erro
Sempre há algumas exceções inesperadas ao jogar SSH na web. Há muitas coisas que você não é cuidadoso ou descuidado. Portanto, as soluções serão diferentes. As soluções que outras pessoas encontraram podem ser inválidas para você. Assim como a exceção que relatei acima, tenho usado o Baidu muitas vezes, e a resposta que me dei nada mais é do que adicionar uma frase à AOP, mas sinto muito, adicionei ao inválido! Portanto, a mesma coisa é verdadeira, você ainda precisa resolver sua própria anormalidade.
Primeiro, deixe -me explicar a estrutura SSH e as razões para a exceção em minha prática desta vez.
O tipo de estrutura de estrutura2.2+hibernate4.2+spring4.0, sala de contêiner tomcat7.0. Em ação, escrevi uma base de classe base, herdei o ACTIONSupport e implementei a interface Modeldriven. O código é o seguinte:
----------@componente@transacional ---------- Classe abstrata pública Baseaction <T> Estende o ACTIONSupport implementa Modeldriven <T> {private estático final serialversionUIDuid = 27196885013072977741L; @Resource (name = "RolesviceImpl") protegido Rouservice Roles. @Resource (name = "departmentService") departamentos de departamentos de departamentos de departamentos; @Resource (name = "UserService") Protected UserService UserService; modelo t protegido; public BaseAction () {ParameterizedType pt = (ParameterizedType) this.getClass (). getGenericsuperclass (); @Suppresswarnings ("desmarcado") Classe <T> clazz = (classe <T>) pt.getActualTyPearguments () [0]; tente {model = clazz.newInstance (); } catch (Exceção e) {lança nova RunTimeException (e); }} public t getModel () {return Model; }} A vantagem disso é que a ação correspondente de cada componente precisa apenas informar a Baseaction que os genéricos implementam e, em seguida, só precisa concluir sua própria lógica. Para cada ação para implementar o Actionupport, esta é uma solução básica e fácil de pensar.
Então, em cada ação, o componente de serviço é chamado para implementar suas próprias funções. Em cada ação, as anotações @Component ("departamentAction") e @Scope ("Prototype") são usadas. No entanto, depois de praticar o teste, um java.lang.nosuchMethodException: com.sun.proxy. $ Proxy58.list () A exceção aparecerá. Depois de verificar, verifica -se que o motivo é:
O Baseation é abstrato, não faz sentido adicionar @transacional a ele.
@Transaction é gerenciado pela primavera. Os objetos gerenciados pela primavera devem ser gerados como agentes. Para uma classe abstrata, ela não pode ser nova em um objeto. Somente a classe de implementação concreta de uma classe abstrata pode ser procurada pela primavera.
Portanto, remover o @Transactional no Baseation é a razão dessa questão.
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!