您的位置:首页 > 编程语言 > Java开发

Spring获取资源文件

2015-11-16 11:02 501 查看
一:Spring中Resource定义资源

1.比较常用的资源定义的实现类为:

a.ClassPathResource  从classpath中读取

b.FileSystemResource  从文件系统中读取

c.UrlResource  从指定URL中读取

d.ServletContextResource 必须要在web环境下使用

2.案例代码

importorg.springframework.core.io.ClassPathResource;
importorg.springframework.core.io.FileSystemResource;
importorg.springframework.core.io.Resource;
importorg.springframework.core.io.UrlResource;
public class ResourceTest {
//ClassPathResource
@Test
publicvoid test1() throws Exception{
Resourceresource1=newClassPathResource("com/cloud/day4/applicationContext_dao.xml");
//获取当前包的路径下【this.getClass()】
Resourceresource2=new ClassPathResource("applicationContext_dao.xml",this.getClass());
System.out.println(resource1.getFile().getAbsolutePath());
System.out.println(resource2.getFile().getAbsolutePath());
}
//FileSystemResource
@Test
publicvoid test2() throws Exception{
Resourceresource=new FileSystemResource("f:/applicationContext_dao.xml");
System.out.println(resource.exists());
System.out.println(resource.getFile().getAbsolutePath());
}
//UrlResource
@Test
publicvoid test3() throws Exception{
Resourceresource=new UrlResource("http://www.baidu.com/");
System.out.println(resource.exists());
System.out.println(resource.getFile().getAbsolutePath());
}
//ServiceContextResource.需要在web环境下测试
@Test
publicvoid test4() throws Exception{
//Resource resource = new ServletContextResource(servletContext,"/WEB-INF/classes/applicationContext.xml");
//System.out.println(resource);
}
}
二:ApplicationContext定义资源文件

如果说BeanFactory是Spring的心脏,那么Application就是完整的身躯。ApplicationContext就是由BeanFactory派生出来的。

ApplicationContext的主要实现类是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统加载文件。

import java.util.Map;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.cloud.day3.UserDao;
public classApplicationContextTest {
@Test
public void test1() throws Exception{
ApplicationContext ac1=newClassPathXmlApplicationContext("com/cloud/day5/applicationContext_dao.xml");
ApplicationContext ac2=new ClassPathXmlApplicationContext("applicationContext_dao.xml", this.getClass());
System.out.println(ac1.getBeanDefinitionCount());
System.out.println(Arrays.toString(ac1.getBeanDefinitionNames()));
System.out.println(ac2.getBeanDefinitionCount());
System.out.println(Arrays.toString(ac2.getBeanDefinitionNames()));
}
/**
* 一次加载多个配置文件
* @throws Exception
*/
@Test
public void test2() throws Exception{
//这里文件的加载不考虑先后顺序,会自动处理文件的依赖关系
ApplicationContext ac1=newClassPathXmlApplicationContext(new String[]{
"com/cloud/day5/applicationContext_dao.xml",
"com/cloud/day5/applicationContext_service.xml"
});
System.out.println(Arrays.toString(ac1.getBeanDefinitionNames()));
ApplicationContext ac2=newClassPathXmlApplicationContext(new String[]{
"applicationContext_dao.xml","applicationContext_service.xml"
},this.getClass());
System.out.println(Arrays.toString(ac2.getBeanDefinitionNames()));
}
@Test
public void testMrthod() throws Exception{
ApplicationContext ac=newClassPathXmlApplicationContext(
"applicationContext_dao.xml",getClass());
//获取指定类型的bean的名称
Stringnames[]=ac.getBeanNamesForType(UserDao.class);
System.out.println(Arrays.toString(names));

//获取指定类型的bean的信息,(key是名称,value是对象实例)
Map<String,Object> map=ac.getBeansOfType(UserDao.class);
System.out.println(map);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: