学习 Spring (七) Resource
Spring入门篇 学习笔记
Resource: Spring 针对资源文件的统一接口
- UrlResource: URL 对应的资源,根据一个 URL 地址即可构建
- ClassPathResource: 获取类路径下的资源文件
- FileSystemResource: 获取文件系统里面的资源
- ServletContextResource: ServletContext 封装的资源,用于访问 ServletContext 环境下的资源
- InputStreamResource: 针对于输入流封装的资源
- ByteArrayResource: 针对于字节数组封装的资源
ResourceLoader: 所有的 application context 都实现了 ResourceLoader 接口
public interface ResourceLoader{
    Resource getResource(String location);
}
ResourceLoader 注入参数前缀:
| 前缀 | 例子 | 解释 | 
|---|---|---|
| classpath: | classpath:com/myapp/config.xml | 从 classpath 加载 | 
| file: | file:/data/config.xml | 从文件系统加载 | 
| http: | http://myserver/logo.png | 从 URL 加载 | 
| 无 | /data/config.xml | 依赖于 ApplicationContext | 
示例
新建类:
public class MoocResource implements ApplicationContextAware  {
	private ApplicationContext applicationContext;
	@Override
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		this.applicationContext = applicationContext;
	}
	public void resource() throws IOException {
		//Resource resource = applicationContext.getResource("classpath:config.txt");
		//Resource resource = applicationContext.getResource("file:E:\\project\\java\\demo\\learningspring\\src\\main\\resources\\config.txt");
		//Resource resource = applicationContext.getResource("https://www.cnblogs.com/victorbu/p/10430698.html");
		Resource resource = applicationContext.getResource("config.txt");
		System.out.println(resource.getFilename());
		System.out.println(resource.contentLength());
	}
}
添加配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd" >
        <bean  id="moocResource" class="com.karonda.resource.MoocResource" ></bean>
 </beans>
添加测试类:
@RunWith(BlockJUnit4ClassRunner.class)
public class TestResource extends UnitTestBase {
	public TestResource() {
		super("classpath:spring-resource.xml");
	}
	@Test
	public void testResource() {
		MoocResource resource = super.getBean("moocResource");
		try {
			resource.resource();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
源码:learning-spring
学习 Spring (七) Resource的更多相关文章
- 跟着刚哥学习Spring框架--事务配置(七)
		事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ... 
- Spring Security Resource Server的使用
		Spring Security Resource Server的使用 一.背景 二.需求 三.分析 四.资源服务器认证流程 五.实现资源服务器 1.引入jar包 2.资源服务器配置 3.资源 六.测试 ... 
- 跟着刚哥学习Spring框架--创建HelloWorld项目(一)
		1.Spring框架简介 Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建.主要对JavaBean的生命周期进行管理的轻量级框架,Spri ... 
- 学习Spring中遇到关于BeanFactory及测试类的问题
		最近在学习Spring,使用的是Spring 5.0.1 学习书本中使用的是4.0 学习书本中使用以下来加载配置文件及设置 Resource resource = new ClassPathResou ... 
- 跟着刚哥学习Spring框架--AOP(五)
		AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ... 
- 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)
		组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ... 
- 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)
		Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式 √ id:标识容器中的bean.id唯一. √ cl ... 
- 跟着刚哥学习Spring框架--Spring容器(二)
		Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用. Bean是S ... 
- 跟着刚哥学习Spring框架--JDBC(六)
		Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ... 
随机推荐
- 获取数值型数组的平均值(分别使用增强for循环和普通for循环)
			package com.Summer_0419.cn; /** * @author Summer * 获取数值型数组的平均值 */ public class Test_Method14 { publi ... 
- DES对称加密算法详解和c++代码实现(带样例和详细的中间数据)
			特点: 1.DES是对称性加密算法,即加密和解密是对称的,用的是同一个密钥 2.DES只处理二进制数据,所以需要将明文转换成为2进制数据 3.DES每次处理64位的数据,所以应该将明文切割成64位的分 ... 
- 【重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
			[重磅干货整理]机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总 . 
- 在WinForm应用程序中快速实现多语言的处理(2)--开发框架模块的整合
			我在上篇随笔<在WinForm应用程序中快速实现多语言的处理>里面介绍了Winform开发中多语言的处理解决方案,整个多语言解决方案是以实际需求为驱动,以减少代码改动,高效处理为目的,通过 ... 
- 抽取非基本验证到规则文件 - A2D规则引擎
			基本验证与业务验证,基本验证就是始终保持不变的验证规则,可以通过如下硬编码实现: public class Order { [Required] [Range(")] public deci ... 
- Kafka 入门三问
			目录 1 Kafka 是什么? 1.1 背景 1.2 定位 1.3 产生的原因 1.4 Kafka 有哪些特征 消息和批次 模式 主题和分区 生产者和消费者 broker 和 集群 1.5 Kafka ... 
- ThinkPHP+JQuery实现文件的异步上传
			前端代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ... 
- MySQL 5.7中如何定位DDL被阻塞的问题
			在上篇文章<MySQL表结构变更,不可不知的Metadata Lock>中,我们介绍了MDL引入的背景,及基本概念,从“道”的层面知道了什么是MDL.下面就从“术”的层面看看如何定位MDL ... 
- 数组去重--ES5和ES6
			思路:把去重后的数组放到一个空数组中 ES5实现: function uni(arr) { var result = []; for (var i=0;i<arr.length;i++) { i ... 
- Sagheer and Nubian Market  CodeForces - 812C (二分)
			On his trip to Luxor and Aswan, Sagheer went to a Nubian market to buy some souvenirs for his friend ... 
