为什么applicationContext.xml和spring-servlet.xml中都有注解过滤<context:component-scan base-package="myprojec...
2017-09-10 00:00
190 查看
在刚学习SpringMVC框架整合时,你也许会产生疑问为什么Spring.xml和SpringMVC.xml中都有注解过滤。
<context:component-scan base-package="myproject"> 和<context:component-scan base-package="myproject.controller" />
在这里有一个比较有意思的问题,初学者也会产生困惑,那么他究竟有何不同?我思考和查询很久,话不多说,也实践做起:
(1)只在applicationContext.xml中配置如下
<context:component-scan base-package="myproject">
启动不报错,,但@Controller失效
(2)只在spring-servlet.xml中配置上述配置
Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0' defined in ServletContext resource [/WEB-INF/spring-mvc-......
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private eis.service.ICollegeServer eis.controller.CommonController.collService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [eis.service.ICollegeServer] 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)}
(3)在applicationContext.xml和spring-servlet.xml中都配置过滤<context:component-scan base-package="myproject"> 和<context:component-scan base-package="myproject.controller" />,
不报错,请求正常,
总结:由此可以分析<context:component-scan base-package="myproject">主要过滤@Controller ,同时还查资料了解<context:component-scan base-package="myproject.controller" /> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能。
<context:component-scan base-package="myproject"> 和<context:component-scan base-package="myproject.controller" />
在这里有一个比较有意思的问题,初学者也会产生困惑,那么他究竟有何不同?我思考和查询很久,话不多说,也实践做起:
(1)只在applicationContext.xml中配置如下
<context:component-scan base-package="myproject">
启动不报错,,但@Controller失效
(2)只在spring-servlet.xml中配置上述配置
Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0' defined in ServletContext resource [/WEB-INF/spring-mvc-......
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private eis.service.ICollegeServer eis.controller.CommonController.collService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [eis.service.ICollegeServer] 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)}
(3)在applicationContext.xml和spring-servlet.xml中都配置过滤<context:component-scan base-package="myproject"> 和<context:component-scan base-package="myproject.controller" />,
不报错,请求正常,
总结:由此可以分析<context:component-scan base-package="myproject">主要过滤@Controller ,同时还查资料了解<context:component-scan base-package="myproject.controller" /> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能。
相关文章推荐
- Spring的配置文件applicationContext.xml中的 <context:component-scan base-package="com.orm" />
- 【小平工作日志】Spring注解注入配置:<context:component-scan base-package="**.**"/>详解!
- Spring配置项之<context:component-scan base-package="..."/>
- 合并注解配置 <context:component-scan base-package="com.**.controller" annotation-config="true"/>
- Spring_<context:component-scan base-package="">和<context:annotation-config>学习
- Spring <context:component-scan base-package="">和<context:annotation-config>
- 关于spring中<context:component-scan base-package="" />写法
- spring 中<context:annotation-config />和<context:component-scan base-package="com.*" >
- 关于使用注解的Spring配置文件的配置<context:annotation-config/>&&<context:component-scan base-package=”XX.XX”/>
- Spring配置文件详解:<context:annotation-config/>和<context:component-scan base-package=""/>和<mvc:annotation-driven />
- Spring <context:component-scan base-package=""/> 与 <context:annotation-config/>的区别
- Spring配置文件详解:<context:annotation-config/>和<context:component-scan base-package=""/>和<mvc:annotati...
- Spring配置文件详解一:<:<context:annotation-config/>与<context:component-scan base-package="com.xx
- Spring配置项之&lt;context:component-scan base-package=&quot;...&quot;/&gt;
- 关于spring中<context:component-scan base-package="" />写法
- Spring扫描组件<context:component-scan base-package=" "/>的使用详解
- [spring]Spring <context:component-scan base-package="">和<context:annotation-config>
- Spring:<context:annotation-config/>与<context:component-scan base-package="com.xx />
- Spring类的自动注入<context:component-scan base-package="com.**.dao" />
- spring mvc <mvc:annotation-driven/> 和<context:component-scan base-package=""/>解释