09 sping核心技术-Resourecs

发布时间:2024年01月12日

Introduction

public interface Resource extends InputStreamSource {

	boolean exists();

	boolean isReadable();

	boolean isOpen();

	boolean isFile();

	URL getURL() throws IOException;

	URI getURI() throws IOException;

	File getFile() throws IOException;

	ReadableByteChannel readableChannel() throws IOException;

	long contentLength() throws IOException;

	long lastModified() throws IOException;

	Resource createRelative(String relativePath) throws IOException;

	String getFilename();

	String getDescription();
}

Built-in Resource Implementations

  • UrlResource
    UrlResource包装了一个java.net.URL,并可用于访问通常可以通过URL访问的任何对象,例如文件、HTTPS目标、FTP目标等

  • ClassPathResource
    该类表示应该从类路径获得的资源。它使用线程上下文类装入器、给定的类装入器或给定的类装入资源。

  • FileSystemResource

  • PathResource

  • ServletContextResource

  • InputStreamResource

  • ByteArrayResource

The ResourceLoader Interface

ResourceLoader接口是由可以返回(即加载)资源实例的对象实现的。下面的清单显示了ResourceLoader接口定义:

public interface ResourceLoader {

	Resource getResource(String location);

	ClassLoader getClassLoader();
}

在这里插入图片描述

The ResourcePatternResolver Interface

ResourcePatternResolver接口是对ResourceLoader接口的扩展,该接口定义了解析位置模式的策略

public interface ResourcePatternResolver extends ResourceLoader {

	String CLASSPATH_ALL_URL_PREFIX = "classpath*:";

	Resource[] getResources(String locationPattern) throws IOException;
}

The ResourceLoaderAware Interface

ResourceLoaderAware接口是一个特殊的回调接口,用于标识希望被提供ResourceLoader引用的组件。下面的清单显示了ResourceLoaderAware接口的定义:

public interface ResourceLoaderAware {

	void setResourceLoader(ResourceLoader resourceLoader);
}

当一个类实现ResourceLoaderAware并被部署到应用程序上下文中(作为spring管理的bean)时,应用程序上下文将其识别为ResourceLoaderAware。然后,应用程序上下文调用setResourceLoader(ResourceLoader),将自身作为参数提供(记住,Spring中的所有应用程序上下文都实现了ResourceLoader接口)。

Resources as Dependencies

如果bean本身将通过某种动态过程确定并提供资源路径,那么bean使用ResourceLoader或ResourcePatternResolver接口来加载资源可能是有意义的。

public class MyBean {

	private Resource template;

	public setTemplate(Resource template) {
		this.template = template;
	}

	// ...
}
@Component
public class MyBean {

	private final Resource template;

	public MyBean(@Value("${template.path}") Resource template) {
		this.template = template;
	}

	// ...
}

Application Contexts and Resource Paths

  • 如何使用资源创建应用程序上下文,包括使用XML的快捷方式、如何使用通配符以及其他细节。
ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");

The bean definitions are loaded from the classpath, because a ClassPathResource is used.

  • 应用程序上下文构造函数资源路径中的通配符:
/WEB-INF/*-context.xml
com/mycompany/**/applicationContext.xml
file:C:/some/path/*-context.xml
classpath:com/mycompany/**/applicationContext.xml
文章来源:https://blog.csdn.net/qq_36551101/article/details/135401440
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。