spring 08-Spring框架Resource资源注入

通过配置文件applicationContext.xml去进行Resource资源读取

定义一个专门负责资源处理的程序:

package cn.liang.util;
import java.util.Scanner;
import org.springframework.core.io.Resource;
public class ResourceUtil {
	private Resource src ;	// 此资源将通过Spring的配置文件管理注入
	public void setSrc(Resource src) {
		this.src = src;
	}
	public void print() throws Exception {	// 直接输出资源的内容
		if (this.src.exists()) {	// 表示该资源存在
			Scanner scan = new Scanner(this.src.getInputStream()) ;
			scan.useDelimiter(" ") ;
			while (scan.hasNext()) {
				System.out.println(scan.nextLine());
			}
			scan.close(); 
		} 
	}
}

配置applicationContext.xml文件

读取CLASSPATH资源:

<bean id="resourceUtil" class="cn.liang.util.ResourceUtil">
<property name="src" value="classpath:applicationContext.xml"/>
</bean>

读取网络资源

<bean id="resourceUtil" class="cn.liang.util.ResourceUtil">
<property name="src" value="http://www.baidu.com"/>
</bean>

读取文件资源

<bean id="resourceUtil" class="cn.liang.util.ResourceUtil">
<property name="src" value="file:/etc/hosts"/>
</bean>

测试程序:

package cn.liang.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.liang.util.ResourceUtil;
public class ResourceDemo03 {
	public static void main(String[] args) throws Exception {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		ResourceUtil ru = ctx.getBean("resourceUtil", ResourceUtil.class);
		ru.print(); 
	}
}

通过配置文件applicationContext.xml去进行多个Resource资源读取

定义一个专门负责资源处理的程序:

package cn.liang.util;
import java.util.Scanner;
import org.springframework.core.io.Resource;
public class ResourceUtils {
	private Resource src[]; // 此资源将通过Spring的配置文件管理注入

	public void setSrc(Resource[] src) {
		this.src = src;
	}

	public void print() throws Exception { // 直接输出资源的内容
		for (int x = 0; x < this.src.length; x++) {
			if (this.src[x].exists()) { // 表示该资源存在
				System.out.println(this.src[x].getFilename() + ":");
				Scanner scan = new Scanner(this.src[x].getInputStream());
				scan.useDelimiter(" ");
				while (scan.hasNext()) {
					System.out.println(scan.nextLine());
				}
				scan.close();
			}
			System.out.println("**********************************");
		}
	}
}

配置applicationContext.xml文件

<bean id="resourceUtils" class="cn.liang.util.ResourceUtils">
	<property name="src">
		<array>
			<value>classpath:applicationContext.xml</value>
			<value>http://www.baidu.com</value>
			<value>file:/etc/hosts</value>
		</array>
	</property>
</bean>

测试程序:

package cn.liang.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.liang.util.ResourceUtils;
public class ResourceDemo04 {
	public static void main(String[] args) throws Exception {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		ResourceUtils ru = ctx.getBean("resourceUtils", ResourceUtils.class);
		ru.print(); 
	}
}

Resource通配符

  • 最常见的资源文件就是“*.properties”文件
  • Resource处理资源时支持三种通配符
    • ?:匹配任意一位字符
      • test-? --匹配test-1、test-2、test-x
    • *:匹配任意多位字符
      • a/*/test --表示在a这个父目录中一级子目录下所有的test文件
    • **:匹配任意多级目录的字符串内容
      • a/**/test --表示不管什么目录下的指定名称文件都进行匹配

定义一个专门负责资源处理的程序:

package cn.liang.util;
import java.util.Scanner;
import org.springframework.core.io.Resource;
public class ResourceUtils {
	private Resource src[]; // 此资源将通过Spring的配置文件管理注入

	public void setSrc(Resource[] src) {
		this.src = src;
	}

	public void print() throws Exception { // 直接输出资源的内容
		for (int x = 0; x < this.src.length; x++) {
			if (this.src[x].exists()) { // 表示该资源存在
				System.out.println(this.src[x].getFilename() + ":");
				Scanner scan = new Scanner(this.src[x].getInputStream());
				scan.useDelimiter(" ");
				while (scan.hasNext()) {
					System.out.println(scan.nextLine());
				}
				scan.close();
			}
			System.out.println("**********************************");
		}
	}
}

配置applicationContext.xml文件

<bean id="resourceUtils" class="cn.liang.util.ResourceUtils">
	<property name="src">
		<array>
			<value>classpath:**/LICENSE*</value>
		</array>
	</property>
</bean>

测试程序:

package cn.liang.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.liang.util.ResourceUtils;
public class ResourceDemo04 {
	public static void main(String[] args) throws Exception {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		ResourceUtils ru = ctx.getBean("resourceUtils", ResourceUtils.class);
		ru.print(); 
	}
}

文件部署:

localhost:main liang$ tree resources/
resources/
├── applicationContext.xml
├── file1
│   └── LICENSE.txt
├── file2
│   ├── LICENSE-1.txt
│   └── LICENSE-2.txt
├── file3
│   └── file3-1
│       └── LICENSE-x.txt
└── log4j.properties

输出结果:

LICENSE.txt:
test null
**********************************
LICENSE-1.txt:
test 01
**********************************
LICENSE-2.txt:
test 02 
**********************************
LICENSE-x.txt:
test x
**********************************
posted @ 2018-12-03 17:23  瞎搞的富哥  阅读(378)  评论(0编辑  收藏  举报