基于maven的ssm项目 运行报错
[http-apr-8089-exec-1] ERROR [org.springframework.web.servlet.FrameworkServlet.initServletBean] - Context initialization failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'productController': Unsatisfied dependency expressed through field 'productService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.yfy.service.ProductService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:586) ~[spring-beans-5.0.2.RELEASE.jar:5.0.2.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91) ~[spring-beans-5.0.2.RELEASE.jar:5.0.2.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372) ~[spring-beans-5.0.2.RELEASE.jar:5.0.2.RELEASE]
报错注入失败,解决方法,先确认扫描配置
service层的applicationContext.xml配置
<context:component-scan base-package="com.yfy.service"></context:component-scan>
确认web.xml正确
全局参数 指定配置文件的路径
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/applicationContext-*.xml</param-value>
</context-param>
由于项目是分模块的,web层 service层 dao层分了三个子模块,每个子模块的配置都在相应的spring文件夹中,所以要用classpath*,而不是classpath,楼主就是写了classpath捣腾了好久。
classpath和classpath*区别:
classpath:加载本项目下的指定目录的配置文件
classpath*: 加载本项目下和本项目所依赖的所有项目的指定目录下的配置文件
详细可参考 https://www.cnblogs.com/EasonJim/p/6709314.html