spring mvc的<mvc:annotation-driven/>有什么用?
转载:https://www.zhihu.com/question/362051844
你提的这个问题是一个相当复杂的问题,如果想要把这个搞透彻,必须建立在对spring ioc和spring mvc源码熟悉的前提上,否则无法看懂接下来我要说的东西,我的描述会尽量简单,忽略无关细节,版本用5.2.7spring文档上这样解释annotation-driven:The preceding example registers a number of Spring MVC infrastructure beans and adapts to dependencies available on the classpath (for example, payload converters for JSON, XML, and others).它的意思就是,annotation-driven注册了一系列基础bean,和一些classpath上依赖进来的bean用人话来翻译,基础bean只能提供最基础的服务,其它的扩展功能,比如JSON、XML、Valid等等,根据classpath有没有相关的依赖来决定要不要添加对应的bean或者属性例如:写一个最简单的返回ModelAndView的Controller,不加annotation-driven,你会发现它是可以运行的,但如果改成返回Json对象加上ResponseBody就会报错,这正好映证了文档中的说法下面从源码出发来看为什么是这样的首先,不论加不加annotation-driven,servlet初始化流程都是这样开始的web容器(任意支持servlet规范的容器,比如tomcat)调用loadServlet,进而调用了DispatcherServlet顶级父类HttpServletBean的init方法,接着向子类调用去new一个webApplicationContext并refresh,refresh时根据配置文件的条目,找对应的handler去处理比如https://www.zhihu.com/question/362051844/answer/1286615054
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如果加了annotation-drivenhttps://www.zhihu.com/question/362051844/answer/1286615054
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。