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
原创粉丝点击