部分代码如下:
报错:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private myforum.service.UserTest myforum.controller.UserController.userTest; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [myforum.service.UserTest] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {org.springframework.beans.factory.annotation.Autowired(required=true)}
配置如下:
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml,classpath:spring-hibernate.xml</param-value>
</context-param>
<servlet>
<description>spring mvc servlet</description>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>spring mvc 配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
spring.xml
<!-- 自动扫描dao和service包(自动注入) -->
<context:component-scan base-package="myforum.dao,myforum.service" />
<!-- 引入属性文件 -->
<context:property-placeholder location="classpath:config.properties" />
spring-mvc.xml
<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
<context:component-scan base-package="myforum.controller" />
需要的都提供了 应该没错,就是注入错误。求牛人解答
问题搞定了,谢谢大家。
还是不够火候,知道问题所在,却就是没发现这么个漏掉的
<context:component-scan base-package="myforum.dao,myforum.service" /> 这样的写法。我没用过。我都是把2个包分开写。不知道你的这个'userController' 是不是在 ,myforum.service包下追问
搞定了,问题不是这个,这两个配置都没问题。
和我想的一样.
web.xml配置问题,导致没加载spring.xml,spring-mvc.xml加载时发现service没被加载,注入报错
问题解决了。就好了
@Service是放在你的Service类上面的(和@Controller放置的地方一样),表示这个类是Service类
从controller到service到dao全部检查一遍;
或者全部粘贴出来,才能看到问题。
你的配置有问题吧
<context:component-scan base-package="myforum.dao,myforum.service" />
有这样的写法吗?
不想扫描某个包使用 表达式过滤掉就可以了。
spring 中的自动扫描中加入
<context:component-scan base-package="myforum" >
<context:exclude-filter type="regex" expression="myforum.controller.*" />
</context:component-scan>
排除掉就可以了吧。你试试
提供的都是半截代码,实在是没法判断追问
控制器这段已经过了.
可能的是
spring.xml
在spring-mvc.xml扫描控制器时还没加载,你觉得可能不
你的配置文件是什么关于什么的?spring mvc的还是什么?
本回答被提问者采纳