springMVC源码分析--ControllerBeanNameHandlerMapping(八)
来源:互联网 发布:用友u8软件免费下载 编辑:程序博客网 时间:2024/06/13 04:08
在上一篇博客springMVC源码分析--AbstractControllerUrlHandlerMapping(六)中我们介绍到AbstractControllerUrlHandlerMapping定义了抽象方法buildUrlsForHandler,接下来我们看看在其子类ControllerBeanNameHandlerMapping中的实现。
ControllerBeanNameHandlerMapping中buildUrlsForHandler的实现如下,还是讲beanName及其别名作为url
@Overrideprotected String[] buildUrlsForHandler(String beanName, Class<?> beanClass) {List<String> urls = new ArrayList<String>();urls.add(generatePathMapping(beanName));String[] aliases = getApplicationContext().getAliases(beanName);for (String alias : aliases) {urls.add(generatePathMapping(alias));}return StringUtils.toStringArray(urls);}generatePathMapping函数中的实现是给beanName加上以下前缀等。
protected String generatePathMapping(String beanName) {String name = (beanName.startsWith("/") ? beanName : "/" + beanName);StringBuilder path = new StringBuilder();if (!name.startsWith(this.urlPrefix)) {path.append(this.urlPrefix);}path.append(name);if (!name.endsWith(this.urlSuffix)) {path.append(this.urlSuffix);}return path.toString();}
和其他的实现子类一样,ControllerBeanNameHandlerMapping实现的功能很简单,就是将beanName及其别名作为url返回。
ControllerBeanNameHandlerMapping源码如下:
public class ControllerBeanNameHandlerMapping extends AbstractControllerUrlHandlerMapping {private String urlPrefix = "";private String urlSuffix = "";public void setUrlPrefix(String urlPrefix) {this.urlPrefix = (urlPrefix != null ? urlPrefix : "");}public void setUrlSuffix(String urlSuffix) {this.urlSuffix = (urlSuffix != null ? urlSuffix : "");}//通过beanName构造url数组@Overrideprotected String[] buildUrlsForHandler(String beanName, Class<?> beanClass) {List<String> urls = new ArrayList<String>();urls.add(generatePathMapping(beanName));String[] aliases = getApplicationContext().getAliases(beanName);for (String alias : aliases) {urls.add(generatePathMapping(alias));}return StringUtils.toStringArray(urls);}//给beanName添加配置的前缀protected String generatePathMapping(String beanName) {String name = (beanName.startsWith("/") ? beanName : "/" + beanName);StringBuilder path = new StringBuilder();if (!name.startsWith(this.urlPrefix)) {path.append(this.urlPrefix);}path.append(name);if (!name.endsWith(this.urlSuffix)) {path.append(this.urlSuffix);}return path.toString();}}
1 0
- springMVC源码分析--ControllerBeanNameHandlerMapping(八)
- Spring Framework源码(八):SpringMVC概览
- SpringMVC源码(八)HandlerInterceptor拦截器
- DispatcherServlet 源码分析(八)
- SpringMVC源码分析(一)
- SpringMVC源码分析(一)
- SpringMVC源码分析(二)
- mina源码分析八(转)
- Netty5源码分析(八) -- 总结
- contiki 源码分析之其他(八)
- Caffe源码(八):concat_layer 分析
- appium源码分析(八)-touch
- scrapy源码分析(八)--------ExecutionEngine
- Shark源码分析(八):CART算法
- kubenetes源码分析之DNS(八)
- 17muduo_base库源码分析(八)
- 32muduo_net库源码分析(八)
- TreeMap源码分析八
- msvcr100.dll 没有指定在windows上运行
- 欢迎使用CSDN-markdown编辑器
- powerdesigner逆向工程生成PDM时的列注释(ColumnComment)解决方案
- Linux/centos中文字体解决方案
- Java - Mac上创建数据库表如何创建到指定的数据库中,此处有坑,已填
- springMVC源码分析--ControllerBeanNameHandlerMapping(八)
- 试位法求解非线性方程的根
- Qt:QML:JavaScript 和QML 语法错误表
- HTTP Get,Post请求详解
- Sublime Text 3 + Markdown 配置步骤
- HDOJ2089 不要62(数位DP)
- 《明解C语言》示例代码和练习代码[第9章]
- jQuery的标签标识
- 使用HTML5的页面资源预加载(Link prefetch)功能加速你的页面加载速度