詳細錯誤:
1 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentServiceImpl': Unsatisfied dependency expressed through field 'studentMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'cn.mgy.mapper.StudentMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 2 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) 3 at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 4 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) 5 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1272) 6 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) 7 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) 8 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) 9 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 10 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) 11 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 12 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) 13 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) 14 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) 15 at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) 16 at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) 17 at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) 18 at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) 19 at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) 20 at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:171) 21 at javax.servlet.GenericServlet.init(GenericServlet.java:158) 22 at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1144) 23 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091) 24 at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:773) 25 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134) 26 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 27 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) 28 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 29 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) 30 at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) 31 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 32 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 33 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) 34 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 35 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) 36 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) 37 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 38 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 39 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 40 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 41 at java.lang.Thread.run(Thread.java:748) 42 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'cn.mgy.mapper.StudentMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 43 at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493) 44 at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) 45 at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) 46 at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) 47 ... 39 more
第一:先查看‘studentMapper’有沒有注入到StudentService里面,經過檢查已注入
第二:查看‘studentMapper’有沒有被掃描到Spring容器里面,經過檢查,該配置類寫錯了
1 // 原始的 2 @Bean 3 public static MapperScannerConfigurer mapperScannerConfigurer() { 4 MapperScannerConfigurer configurer = new MapperScannerConfigurer(); 5 // 1.設置使用的會話工廠 6 configurer.setSqlSessionFactoryBeanName("sessionFactory"); 7 // 2.配置掃描的映射接口 8 configurer.setBasePackage("cn.mgy.mapper"); 9 // 3.指定組件類型 10 configurer.setAnnotationClass(Repository.class); // 該類應該是Mapper.class,因為前面我使用的是@Mapper注解的,所以此處應改為Mapper.class 11 return configurer; 12 } 13 14 // 修改后的 15 @Bean 16 public static MapperScannerConfigurer mapperScannerConfigurer() { 17 MapperScannerConfigurer configurer = new MapperScannerConfigurer(); 18 // 1.設置使用的會話工廠 19 configurer.setSqlSessionFactoryBeanName("sessionFactory"); 20 // 2.配置掃描的映射接口 21 configurer.setBasePackage("cn.mgy.mapper"); 22 // 3.指定組件類型 23 configurer.setAnnotationClass(Mapper.class); 24 return configurer; 25 }