概述
DispatcherServlet配置两种方式:
- 指定配置文件路径,set contextConfigLocation
- 配置文件使用约定的路径和命名方式
<!--声明指定配置文件路径,servlet.init()过程会转换ServletConfig,作为DispatcherServlet 初始化参数,完成contextConfigLocation的set操作-->
<servlet>
<servlet-name>sample</servlet-name>
<servlet-class>org.s.w.s.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:conf/sample-servlet.xml
</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!--加载约定(默认)路径/WEB-INF/{servlet-name}-servlet.xml-->
<servlet>
<servlet-name>sample</servlet-name>
<servlet-class>org.s.w.s.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
Insight 清单:
- setConfigLocation支持多种符号分隔的多路径配置
// with distinct locations separated by commas, semicolons or whitespace.
// see org.springframework.web.servlet.FrameworkServlet
public void setConfigLocation(String location) {
setConfigLocations(StringUtils.tokenizeToStringArray(location, CONFIG_LOCATION_DELIMITERS));
}
- 如果没有声明指定configLocations,会尝试加载约定(默认)的配置
protected String[] getConfigLocations() {
return (this.configLocations != null ? this.configLocations : getDefaultConfigLocations());
}
- 约定路径即:/WEB-INF/ + getNamespace() + .xml
- Spring core对于资源抽象为Resource接口,约定的配置文件体现为ServletContextResource
- 约定的配置文件操作,委托给servletContext实现
public InputStream getInputStream() throws IOException {
InputStream is = this.servletContext.getResourceAsStream(this.path);
if (is == null) {
throw new FileNotFoundException("Could not open " + getDescription());
}
return is;
}
- 特别说明,Insight源码,注意基类的实现以及真正实现类的override ,否则很容易迷路、困惑。
最后
以上就是心灵美小熊猫为你收集整理的Insight Spring MVC 配置加载机制的全部内容,希望文章能够帮你解决Insight Spring MVC 配置加载机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复