【springMVC】<mvc:annotation-driven />标签的使用、作用?


 

不牵扯源码的显式的作用

  • 在使用interceptor时,显式的作用。

这是不配置<mvc:annotation-driven/>标签时的public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler)的第三个参数

这是在配置<mvc:annotation-driven />标签时的public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler)的第三个参数

粗略总结:此标签会加载一些spring的初始化类,来进行初始化。(分析源码时,再详细解)

错误: 在此处情景下,

	@RequestMapping("/vm")
	@ResponseBody
	public JsonResult vm(HttpServletRequest request,HttpServletResponse response){
		JsonResult jr =new JsonResult();
		System.out.println("systemController/vm....");
		return jr;
	}
public class JsonResult {
    private boolean success = true;
    private Map<String ,Object> results = new HashMap<String,Object>();
    private Long page =1L;
    private Long total ;
 //get set方法省略   
}

仅仅配置<mvc:annotation-driven></mvc:annotation-driven>会出现下图错误

提示没有对应的converter,至于为什么,有待分析源码给出准确答案。

解决办法:配置<mvc:message-converters></mvc:message-converters>子标签,引入阿里fastjson支持,不使用spring默认的Jackson。完整配置如下:

        <mvc:annotation-driven>
            <mvc:message-converters>
                <!-- 配置fastjson代替原来jackson的支持 -->
                <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>text/json;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>

原文地址:https://www.cnblogs.com/oldwei/p/9081554.html