美文网首页
spring ResoureceLoader资源加载体系

spring ResoureceLoader资源加载体系

作者: zzz_0427 | 来源:发表于2019-11-20 15:22 被阅读0次

Resoure资源由ResourceLoader统一加载,调用getResource方法

ResourceLoader的UML类图\

DefaultResourceLoader类实现ResourceLoader接口中的方法

public class DefaultResourceLoaderimplements ResourceLoader {

@Nullable

private ClassLoader classLoader;

/**

* /默认类加载器为Thread.currentThread().getContextClassLoader()

*/

  public DefaultResourceLoader() {

this.classLoader = ClassUtils.getDefaultClassLoader();

}

/**

*

*/

  public DefaultResourceLoader(@Nullable ClassLoader classLoader) {

this.classLoader = classLoader;

}

/**

* setter方法

*/

  public void setClassLoader(@Nullable ClassLoader classLoader) {

this.classLoader = classLoader;

}

/**

* getter方法

*/

  @Override

@Nullable

public ClassLoader getClassLoader() {

return (this.classLoader !=null ?this.classLoader : ClassUtils.getDefaultClassLoader());

}

@Override

public Resource getResource(String location) {

Assert.notNull(location,"Location must not be null");

//ProtocolResolver为用户自定义的资源协议解析器

      for (ProtocolResolver protocolResolver : getProtocolResolvers()) {

Resource resource = protocolResolver.resolve(location,this);

if (resource !=null) {

return resource;

}

}

//获取ClassPathContextResource类型的Resource  应该是FileSystemContextResource

      if (location.startsWith("/")) {

return getResourceByPath(location);

}

//获取ClassPathResource的resource

      else if (location.startsWith(CLASSPATH_URL_PREFIX)) {

return new ClassPathResource(location.substring(CLASSPATH_URL_PREFIX.length()), getClassLoader());

}

//获取UrlResource的resource

      else {

try {

// Try to parse the location as a URL...

            URL url =new URL(location);

return (ResourceUtils.isFileURL(url) ?new FileUrlResource(url) :new UrlResource(url));

}

catch (MalformedURLException ex) {

// No URL -> resolve as resource path.

            return getResourceByPath(location);

}

}

}

}

相关文章

网友评论

      本文标题:spring ResoureceLoader资源加载体系

      本文链接:https://www.haomeiwen.com/subject/myuoictx.html