Spring注入出错,麻烦各位大侠解决下(Caused by: java.lang.IllegalArgumentException:Can not set )

我是小小小小程序媛 2014-04-30 02:37:56


框架是spring3.0MVC+Hibernate,在启动项目的时候,会报如下的错误:



严重: StandardWrapper.Throwable
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: BIA.Service.LoginServiceImp BIA.Controller.LoginController.loginServiceImp; nested exception is java.lang.IllegalArgumentException: Can not set BIA.Service.LoginServiceImp field BIA.Controller.LoginController.loginServiceImp to $Proxy20
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: BIA.Service.LoginServiceImp BIA.Controller.LoginController.loginServiceImp; nested exception is java.lang.IllegalArgumentException: Can not set BIA.Service.LoginServiceImp field BIA.Controller.LoginController.loginServiceImp to $Proxy20
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282)
... 42 more
Caused by: java.lang.IllegalArgumentException: Can not set BIA.Service.LoginServiceImp field BIA.Controller.LoginController.loginServiceImp to $Proxy20
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
at java.lang.reflect.Field.set(Field.java:657)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498)
... 44 more
2014-4-30 14:20:03 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet /BIAoa threw load() exception
java.lang.IllegalArgumentException: Can not set BIA.Service.LoginServiceImp field BIA.Controller.LoginController.loginServiceImp to $Proxy20
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
at java.lang.reflect.Field.set(Field.java:657)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:498)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)



这是LoginController的代码:


@Controller
public class LoginController {


@Autowired //注入
LoginServiceImp loginServiceImp;

@RequestMapping(value="/login/{userId}/{userPwd}",method=RequestMethod.POST)
public String login(@PathVariable("userId") String userId,@PathVariable("userPwd") String userPwd){

boolean flag=loginServiceImp.login(userId, userPwd);
if(flag){
return "main";
}else{

return "login";
}
}

@InitBinder //初始化数据绑定器
public void initBinder(WebDataBinder binder){

//对日期型的数据进行绑定
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
binder.registerCustomEditor(Date.class, new CustomDateEditor(
dateFormat,true));
}

public LoginServiceImp getLoginServiceImp() {
return loginServiceImp;
}

public void setLoginServiceImp(LoginServiceImp loginServiceImp) {
this.loginServiceImp = loginServiceImp;
}


}


这是LoginServiceImp的代码:

@Service //用于标注业务层组件
@Transactional
public class LoginServiceImp implements LoginService{

@Autowired LoginDao loginDao;

public boolean login(String userId, String userPwd) {
boolean flag=loginDao.login(userId, userPwd);
return flag;
}


}


LoginDao是定义的一个接口类,它的实现类就是通过hibernate对数据库的数据进行查询。

现在小弟想问的就是这个错误是因为什么产生的,应当如何解决。望各位大侠赐教
...全文
1664 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 xuefeng0707 的回复:
有接口LoginService,为什么要用实现类LoginServiceImp? 把:
@Autowired //注入
    LoginServiceImp loginServiceImp;
改成:
@Autowired //注入
    LoginService loginService;
我试试去,看是不是又是我粗心大意的毛病犯事。
xuefeng0707 2014-04-30
  • 打赏
  • 举报
回复
有接口LoginService,为什么要用实现类LoginServiceImp? 把:
@Autowired //注入
    LoginServiceImp loginServiceImp;
改成:
@Autowired //注入
    LoginService loginService;
  • 打赏
  • 举报
回复
怎么还没有高手来解决下,我的小伙伴们都急死了。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧