SpringMVC自动扫描@Controller注解的bean
发布网友
发布时间:2022-12-10 05:25
我来回答
共1个回答
热心网友
时间:2024-11-14 16:56
若要对@Controller注解标注的bean进行自动扫描,必须将<context:component-scan base-package="包路径.controller"/>放置在dispatcherservlet的配置文件中,若配置在ContextLoaderListener的配置文件applicationContext.xml中则不起作用
在SpringMVC中@Controller注解的bean必须由DispatcherServlet初始化的children webApplicationContext来管理,
在DispatcherServlet初始化的context中会扫描当前容器所有的bean实例,根据类级别以及方法级别的映射信息注解组装成对应的HandleMappering信息,但是ContextLoaderListener是不具备这个功能的。
contextLoaderListener对@Service是可以扫描的,可以理解为,由DispatcherServlet加载相当于在ContextLoaderListener加载的基础上增加了controller的处理,所以DispatcherServlet加载的controller和bean都好用,ContextLoaderListener加载的bean好用而controller不好用。
web层controlller配置文件最好独立于其他业务bean配置文件,所以一般将对@Controller的自动扫描配置在DispatcherServlet的配置文件中,而将对@Service和@Repository的扫描配置在ContextLoaderListener的配置文件中