为什么applicationContext.xml和spring-servlet.xml中都有注解过滤<context:component-scan base-package="myproject">...

本文通过实验对比了在SpringMVC框架中,不同位置配置&lt;context:component-scan&gt;的区别,分析了其对@Controller注解的影响,并解释了如何正确配置以实现控制器的自动扫描。

在刚学习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 定义的功能,同时还启用了注释驱动自动注入的功能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值