Spring获取资源文件

一: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);  
   }  
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值