Spring应用手册-ResourceLoader接口

戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注

ResourceLoader接口

spring应用手册(第五部分)


上一章节,我们解释了Resource接口。现在我们来看看ResourceLoader。

	Spring框架为了更方便的获取资源,尽量弱化程序员对各个Resource接口实现类的感知与分辨,降低学习与使用成本,定义了另一个接口,就是:ResourceLoader接口。
package org.springframework.core.io;

public interface ResourceLoader {
    String CLASSPATH_URL_PREFIX = "classpath:";
	//根据s返回对应的Resource对象
    Resource getResource(String s);
	//返回当前可用的Classloader对象
    @Nullable
    ClassLoader getClassLoader();
}

我们常使用的ApplicationContext就实现了ResourceLoader接口。所以其实我们可以通过我们自己创建Application对象直接加载资源,而且我们不需要具体的底层实现,看一个案例:

@Test
public void testResourLoader(){
    ApplicationContext ac =
            new ClassPathXmlApplicationContext();
    Resource resource = ac.getResource("applicationContext-demo9.xml");
    System.out.println(resource.getFilename());
}

在这里插入图片描述
其实用过spring的朋友都会发现,我们几乎没怎么使用过这个ResourceLoader。其实主要是因为我们创建了ApplicationContext对象,这个对象在内部会自己使用ResourceLoader进行资源加载,那么问题是不同的资源应该怎么加载呢?

我们上一章节提到Resource有6中具体实现,那么这个6中具体实现是否有不同的加载方法? 那是自然的,但是我们不需要关心细节,我们只要按下面的方式操作:

如果用ClassPathXmlApplicationContext启动的Spring容器,则底层Resource是ClassPathResource实例
如果用FileSystemXmlApplicationContext启动的Spring容器,则底层Resource是FileSystemResource实例 
如果用XmlWebApplicationContext启动的Spring容器,则底层Resource是ServletContextResource实例

当然我们也可以通过资源的前缀来指定使用的Resource的实例:

例如前缀"classpath:"是指定使用ClassPathResource;前缀"file:"则指定使用UrlResource访问本地系统资源等

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴着假发的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值