从DispatcherServlet到LocaleResolver

tomcat启动,DispatcherServlet调用initLocaleResolver方法初始化LocaleResolver,先加载用户注入的LocaleResolver,如果用户没有注入LocaleResolver则获取DispatcherServlet.properties默认配置的org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver。

LocaleResolver接口里面有两个方法resolveLocale、setLocale。resolveLocale方法通过给定请求解析当前域(Locale)设置,在任何情况下都可以返回默认域(Locale)设置。setLocale方法是给请求设置域(Locale)。

DispatcherServlet调用doService方法时,会先给请求设置域(Locale)解析器request.setAttribute(LOCALE_RESOLVER_ATTRIBUTE, this.localeResolver);

doService方法调用doDispatch方法,

doDispatch方法调用processDispatchResult方法处理程序结果,

processDispatchResult方法里面ModelAndView对象存在且未被清除时调用reader方法,

reader方法首先会判断localeResolver是否存在,存在的话调用localeResolver的resolveLocale方法解析当前域(Locale)设置,不存在的话,直接获取当前请求的域(Locale),将获取的域(Locale)设置给当前请求。

LocaleResolver就已经处理完成。

猜你喜欢

转载自blog.csdn.net/qq_26400953/article/details/86643190