异常如下:
[com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor]-[ERROR] $Proxy9 cannot be cast to com.student.service.StudentService
java.lang.ClassCastException: $Proxy5 cannot be cast to com.student.service.StudentService
解决方法:
导致出问题的代码片段:
//userService定义为接口类型!!! 不能是实现类类型
private static UserServiceBean userService;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
try {
ApplicationContext cat = new ClassPathXmlApplicationContext("beans.xml");
userService = ( UserServiceBean) cat.getBean("userServiceBean");
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
正确代码:
private static UserService userService;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
try {
ApplicationContext cat = new ClassPathXmlApplicationContext("beans.xml");
userService = (UserService) cat.getBean("userServiceBean");
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这主要代理需要用到接口
Ps: 所以通过这种代理的话,必须声明一个接口(例如Service),并在接口中声明实现类(例如: UserService)所需要的方法,这样 userService = (UserService) cat.getBean("userServiceBean")
其中把 private static UserService userService 写成了 private static UserServiceBean userService