由于jdk所提供的资源访问类不能满足各种底层资源访问需求。因此我们大多选择spring的resource接口来解决这类问题,该接口拥有对应不同资源类型的实现类。
Resource接口主要方法有:
1.boolean exists() 判断资源是否存在
2.boolean ipOpen() 判断资源是否打开
3.URL getURL()throws IOException 如果底层资源可以表示成URL,返回对应URL对象
4.File getFile() throws IOException 如果底层资源可以表示成文件,返回对应File对象
5.InputStream getInputStream() throws IOException 返回资源对应的输入流
Resource具体实现类:
ClassPathResource:类路径下的资源,位置在classes路径下
FileSystemResource:文件系统资源,资源以文件系统路径的方式表示,如:D:/File/conf.xml;
InputStreamResource:对应一个InputStream的资源
ServletContextResource:访问web容器上下文中资源的类,负责以相对于web应用根目录的路径加载资源,支持以流和URL的方式访问,。
UrlResource :用户能够访问任何可以通过URL表示的资源。如http资源,ftp资源。
例如:
public class FileSourceExample {
public static void main(String[] args) {
try {
String filePath = "D:/classes/conf/file1.txt";
Resource res1 = new FileSystemResource(filePath);
//转换文件编码格式
EncodedResource encRes = new EncodedResource(res1,"UTF-8");
String content = FileCopyUtils.copyToString(encRes.getReader());
Resource res2 = new ClassPathResource("conf/file1.txt");
Resource res3 = new ServletContextResource(application,"/WEB-INF/classes/conf/file1.txt");
InputStream ins1 = content.getInputStream();
InputStream ins2 = res2.getInputStream();
System.out.println("res1:"+encRes.getFilename());
System.out.println("res2:"+res2.getFilename());
} catch (IOException e) {
e.printStackTrace();
}
}
}
资源加载器:ResourceLoader
Spring定义了一套资源加载的接口,并提供了实现类
Resourceloader接口的getResource(String location)方法
ResourcePatternResolver接口,定义新的接口方法:getResources(String locationPattern)
PathMatchingResourcePatternResolver类
例如:
public class PatternResolverTest {
public static void main(String[] args) throws Throwable{ ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource resources[] =resolver.getResources("classpath*:com/baobaotao/**/*.xml");
for(Resource resource:resources){
System.out.println(resource.getDescription());
}
}
}
分享到:
相关推荐
Spring实战之ResourceLoader接口资源加载用法示例 Spring Framework 提供了 ResourceLoader 接口来加载资源,资源可以是文件、URL、classpath 等。ResourceLoader 接口提供了多种资源加载方式,例如从文件系统、...
1. 使用ResourceLoader:Spring容器提供了ResourceLoader,它可以方便地创建和管理Resource实例,避免直接硬编码资源路径。 2. 避免使用绝对路径:尽可能使用相对路径来创建Resource对象,这样更有利于应用的移植性...
`Resource`接口是Spring框架提供的一种抽象层,用于封装资源访问,它可以是本地文件系统中的文件,也可以是URL、类路径下的资源,甚至是JDBC数据源。通过`Resource`接口,开发者可以统一地处理不同来源的资源,提高...
在Spring框架中,Resource接口是核心组件之一,用于表示应用程序中的资源,比如文件、网络连接、输入/输出流等。在上述代码示例中,我们可以看到两种Resource的实例化方式:FileSystemResource和ClassPathResource。...
1. **BeanClassLoaderAware**:这个接口使得Bean能够获取加载它的类加载器。当Bean实现此接口并容器实例化Bean时,`setBeanClassLoader(ClassLoader classLoader)`方法会被调用,传入负责加载该Bean的ClassLoader...
- **增强的事务管理**:resource4j的流处理与Spring的事务管理相结合,可以实现更细粒度的事务控制。 - **统一资源处理**:将所有资源操作通过resource4j进行,确保一致性和可维护性。 3. **集成步骤** - **...
2. **Spring Context**:建立在核心容器基础上,添加了对国际化、事件传播、资源加载以及事务管理的支持。 3. **Spring AOP**:面向切面编程的支持,允许以声明的方式将切面加入到业务逻辑中。 4. **Spring DAO**:...
通过`Resource`接口及其多个实现类,Spring简化了资源访问的过程,并且支持多种不同的资源类型,从而使得应用更加健壮和易于维护。此外,策略模式的运用也使得资源访问方式的选择变得更加灵活。
本文将详细介绍Spring如何通过`Resource`接口及其实现类来简化资源的访问。 首先,传统的资源访问方式通常依赖于`java.net.URL`和文件I/O操作,这种方式不仅代码复杂,而且效率较低。例如,在`URLTest`类中,我们...
Spring通过`ResourceLoader`接口来加载资源,而`ApplicationContext`实现了`ResourceLoader`,因此它具备加载资源的能力。当遇到如`classpath:`或`file:`的前缀时,Spring会解析这些前缀并使用相应的加载策略来获取...
ResourceLoader接口是Spring框架中一个重要的接口,用于提供对资源的加载和访问能力。该接口提供了多种方法,例如getResource(String location)、getClassLoader()等,用于加载和访问不同的资源。 三、使用...
- Spring 提供了一个 `ResourceLoader` 接口,可以通过它来获取资源。 - 示例代码: ```java ResourceLoader resourceLoader = new DefaultResourceLoader(); Resource resource = resourceLoader.getResource...
4. Spring框架:Spring框架的`Resource`接口和`ResourceLoader`类提供了高级的资源操作,支持从不同来源(包括`jar`包)加载资源。 5. 配置文件:在`jar`包中常包含配置文件,如`application.properties`,可以使用...
资源加载器即使是从JAR内部或JAR外部进行加载,Resource Loader也为您提供了加载resource文件的功能。 资源加载器还支持通过SharedLibraryLoader加载共享库。安装这是在基于Gradle的项目中安装库的方法。 // Top-...
- **正确设置路径**:在获取或下载资源时,应使用`ClasspathResource`或`ResourceLoader`来获取正确的类路径资源。例如: ```java Resource resource = new ClassPathResource("static/filename.ext"); ``` - *...
- **资源加载**:通过 `ResourceLoader` 接口提供对资源文件的加载能力,例如图片、音频文件等。 - **事件通知**:通过 `ApplicationEventPublisher` 接口实现容器事件的发布,例如 Bean 初始化完成、容器关闭等事件...
- **ResourceLoader**:用于加载资源。 - **ResourceLoaderAware接口**:允许Bean获取到ResourceLoader实例。 - **资源作为依赖**:如何将资源注入到Bean中。 - **验证、数据绑定与类型转换** - **使用Spring ...
此外,Spring还提供了`Resource`接口,允许我们直接访问JAR内的资源。例如,我们可以这样做: ```java @Autowired private ResourceLoader resourceLoader; public void readConfigFile() throws IOException { ...