http://www.iteye.com/problems/98179
在spring mvc中@Controller注解的bean必须由DispatcherServlet初始化的children webApplicationContext来管理,在DispatcherServlet初始化的context中会扫描当前容器所有的bean实例,根据类级别以及方法级别的映射信息注解组装成对应的HandleMappering信息,但是ContextLoaderListener是不具备这个功能的,所以你的A bean实例有问题。
另外,最好使用DispatcherServlet去扫描@Controller注解的bean,而servie bean使用COntextLoaderListener scan(web层controlller配置文件最好独立于其他业务bean配置文件)
你可以这么理解,由DispatcherServlet加载相当于在ContextLoaderListener加载的基础上增加了controller的处理,所以DispatcherServlet加载的controller和bean都好用,ContextLoaderListener加载的bean好用而controller不好用.