java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list 오류 해결 방법

java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list 오류 해결 방법
웹을 하는 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에서 서비스 구성 요소를 호출하여 자신의 기능을 실현하고 모든 Action에서 @Component("department Action"), @Scope("prototype") 주석을 사용하지만 테스트를 연습하면 자바가 나타납니다.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list () 예외, 확인 후 발견:
BaseAction은 추상적인 것으로 @Transactional을 추가하는 것은 의미가 없습니다.
한편, @Transactional은spring관리가 있다.spring관리의 대상은 에이전트를 생성해야 하지만 하나의 추상적인 클래스는 new에 의해 대상이 될 수 없고 하나의 추상적인 클래스의 구체적인 실현 클래스만 스프링 에이전트가 될 수 있다.
그래서 BaseAction 위의 @Transactional을 없애는 것이 이 문제의 원인이다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기