Spring 资源配置
1. 资源配置文件
- 之前配置Bean的属性时,大多情况下值是固定的。这就可以利用XML或注解配置。
- 若值是动态的,就需要外置资源文件。
- 使用PropertyPlaceholderConfigure配置属性文件
- 使用
<context:property-placeholder>
配置属性文件 - 使用@Value注解给Bean的属性注入值(${ })
2. Spring资源接口
- IoC控制的是应用程序所需要的资源。
- Resource接口将所有关于文件的处理方式统一起来,不管文件的来源,统一获取资源。
2.1 Resource接口的实现类
- ByteArrayResource
① 代表 byte[] 数组资源
② getInputStream 将返回一个 ByteArrayInputStream
③ ByteArrayResource 可多次读取数组资源,即 isOpen () 永远返回 false - InputStreamResource
① 代表 java.io.InputStream 字节流
② 对于 getInputStream 操作将直接返回该字节流
③ 只能读取一次该字节流,即 isOpen 永远返回 true - FileSystemResource
① 代表 java.io.File 资源
② 对于 getInputStream 操作将返回底层文件的字节 流
③ 可多次读取底层文件的字节流,即 isOpen() 永远返回 false - ClassPathResource :
① 代表 classpath 路径的资源
② 使用 ClassLoader 进行加载资源。
③ classpath 资源存在于类路径中的文件系统中或 jar 包里
④ 可多次读取资源,即 isOpen() 永远返回 false
⑤ ClassPathResource 加载资源替代了Class类和ClassLoader类的 getResource(String name) 和 getResourceAsStream(String name) 两个加载类路径资源方法,提供一致的访问方式。
2.2 策略模式
一个接口有不同的实现,不同的实现解决同样的问题。
每一种实现都为一种策略
Spring中对于资源的管理就相当于策略模式
-> 一个Resource接口实现了InputStream接口,有很多实现类。实现类中有byte[ ]、ClassPath… …