标签:监听 配置文件 作用 映射 -name config frame val hand
若要对@Controller注解标注的bean进行自动扫描,必须将<context:component-scan base-package="包路径.controller"/>放置在dispatcherservlet的配置文件中,若配置在ContextLoaderListener的配置文件applicationContext.xml中则不起作用
<!-- 上下文配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:config/spring/spring-*.xml</param-value> </context-param> <!-- 监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
在SpringMVC中@Controller注解的bean必须由DispatcherServlet初始化的children webApplicationContext来管理,
<servlet> <servlet-name>console</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:config/spring/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
在DispatcherServlet初始化的context中会扫描当前容器所有的bean实例,根据类级别以及方法级别的映射信息注解组装成对应的HandleMappering信息,但是ContextLoaderListener是不具备这个功能的。
contextLoaderListener对@Service是可以扫描的,可以理解为,由DispatcherServlet加载相当于在ContextLoaderListener加载的基础上增加了controller的处理,所以DispatcherServlet加载的controller和bean都好用,ContextLoaderListener加载的bean好用而controller不好用
web层controlller配置文件最好独立于其他业务bean配置文件,所以一般将对@Controller的自动扫描配置在DispatcherServlet的配置文件中,而将对@Service和@Repository的扫描配置在ContextLoaderListener的配置文件中
SpringMVC自动扫描@Controller注解的bean
标签:监听 配置文件 作用 映射 -name config frame val hand
原文地址:http://www.cnblogs.com/winner-0715/p/6034621.html