`
thaIm
  • 浏览: 91200 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring --- Resource

阅读更多
一)如何使用spring中的resource
   Spring的资源文件访问功能使用起来十分简单,调用ApplicationContext.getResource的方法即可:
Resource template = ctx.getResource("some/resource/path/myTemplate.txt");
Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");
Resource template = ctx.getResource("file:/some/resource/path/myTemplate.txt");
Resource template = ctx.getResource("http://myhost.com/resource/path/myTemplate.txt");


二)resource的深入了解
    其实知道了以上的gerResource方法,就已经能够满足我们日常的资源文件访问的需要了。但本着精益求精的精神,我们不妨看下spring的源码,看看spring到底是如何实现这个功能模块的。首先是接口Resource:
public interface Resource extends InputStreamSource {
  boolean exists();
  boolean isOpen();
  URL getURL() throws IOException;
  File getFile() throws IOException;
  Resource createRelative(String relativePath) throws IOException;
  String getFilename();
  String getDescription();
}
public interface InputStreamSource {
  InputStream getInputStream() throws IOException;
}

   基于这个底层接口,spring运用多态继承了一系列的子类以满足不同形式的资源文件访问:
  UrlResource:  file:   http:   ftp: 的资源访问形式都是它处理啦
  ClassPathResource:  看名字也猜的出来classpath:的资源访问形式就是它处理的
  FileSystemResource: 从文件系统路径获取资源文件,C:\XXXXX
  ServletContextResource: web应用中从context下获取资源文件,相对路径绝对路径均可
  InputStreamResource: 缺省的Resource类,如果根据输入的url形式找不到对应的Resource,那么就调用它了...当然我们也可以显示的调用它:
@Test  
public void testInputStreamResource() {  
   ByteArrayInputStream bis = new ByteArrayInputStream("Hello World!".getBytes());  
   Resource resource = new InputStreamResource(bis);  
   if(resource.exists()) {   ......  }    
}


  ByteArrayResource: 看代码便知...
  @Test
  public void testByteArrayResource() {
    Resource resource = new ByteArrayResource("Hello World!".getBytes());
    if(resource.exists()) { ...... }
  }


三)ResourceLoaderAware
  和其它Aware一样,继承此接口后,当此bean实例化时会自动调用setResourceLoader(ResourceLoader resourceLoader)方法。
public interface ResourceLoaderAware {
  void setResourceLoader(ResourceLoader resourceLoader);
}


四) Resource的注入
  那么,如果是一个resouce类,Spring在配置文件中改如何处理以使它自动注入呢?样例如下:
<bean id="myBean" class="...">
  <property name="template" value="some/resource/path/myTemplate.txt"/>
</bean>

<property name="template" value="classpath:some/resource/path/myTemplate.txt">
<property name="template" value="file:/some/resource/path/myTemplate.txt"/>

  十分方便吧~~

五)资源文件的通配样式
  当你需要一次获取多个资源文件时,你可以考虑采用以下一些通配的手段:
/WEB-INF/*-context.xml
com/mycompany/**/applicationContext.xml
file:C:/some/path/*-context.xml
classpath:com/mycompany/**/applicationContext.xml
classpath*:conf/appContext.xml  //获取classpath内所有的conf/appContext.xml,不加*的话只会加载搜索时遇到的第一个匹配文件
分享到:
评论

相关推荐

    解析spring-boot-starter-parent简介

    spring-boot-starter-parent还提供了一些其他的配置选项,例如resource delimiter、编码设置等。这些配置选项可以帮助开发者更好地控制项目的构建和测试过程。 spring-boot-starter-parent是一个非常实用的依赖项...

    使用spring-cloud-security-oauth2来实现oauth server和resource server

    使用spring-cloud-security-oauth2来实现oauth server和resource server,oauth Server和resource Server分开,resource Server实现了两种方式

    spring-resource-handling, Spring Framework 4.1资源处理示例.zip

    spring-resource-handling, Spring Framework 4.1资源处理示例 spring-资源处理 这里应用程序演示 Spring Framework 4.1中的新资源处理功能。 它最初是为在 4.1中讨论资源而开发的,在 SpringOne2GX 2014中讨论。...

    spring-security-oauth2-2.0.3.jar(包括jar包,源码,doc)

    OAuth2的核心概念包括客户端(Client)、资源所有者(Resource Owner)、资源服务器(Resource Server)和授权服务器(Authorization Server)。Spring Security OAuth2提供了对这些角色的支持,包括认证流程、令牌...

    spring-boot-2-oauth2-resource-server:带有用户和客户端数据库(JPA,Hibernate,MySQL)的Spring Boot 2 OAuth2资源和授权服务器实现

    Spring Boot 2 Oauth2资源和授权服务器 使用用户和客户端数据库... git clone https://github.com/indrekru/spring-boot-2-oauth2-resource-server.git 您需要在您的环境中安装Maven: Mac(自制): brew install

    spring-framework-3.0.5.RELEASE-dependencies-1

    javax.resource javax.servlet javax.transaction javax.validation javax.xml.bind javax.xml.rpc javax.xml.soap javax.xml.stream javax.xml.ws net.sourceforge.cglib net.sourceforge.ehcache ...

    spring-boot-reference-zh

    12. **国际化的支持(i18n)**:Spring Boot 提供了处理多语言的工具,如消息源(MessageSource)和资源包(Resource Bundle)。 13. **事件驱动和消息传递**:通过 Spring Integration 和 AMQP 支持消息队列(如 ...

    spring-boot-maven-plugin导入本地的一些jar并打包.docx

    ### Spring Boot Maven插件导入本地JAR包并进行打包的知识点 #### 一、Spring Boot Maven插件简介 `spring-boot-maven-plugin`是Spring Boot官方提供的Maven插件,用于简化Spring Boot项目的构建过程。它支持将...

    spring-context源码

    `Resource`接口和其实现类如`ClassPathResource`、`FileSystemResource`则负责读取和操作外部资源。 七、Spring表达式语言(SpEL) `spring-context`包含了强大的Spring表达式语言(SpEL),它允许在运行时对bean...

    spring-resource

    在Spring框架中,`resource`是一个非常重要的概念,它主要用于管理和访问各种类型的资源,如文件、数据库连接、网络资源等。在本场景中,我们关注的是如何利用Spring的`Resource`接口来读取配置文件。这在Java应用...

    spring-mybatis-spring-1.1.0.zip

    8. 注入Mapper:通过@Autowired或@Resource注解,将Mapper接口注入到需要使用的地方,即可调用其方法执行数据库操作。 本资源包“spring-mybatis-spring-1.1.0.zip”提供的正是这样一个完整的整合示例,它包含了...

    spring-security-oauth2-authorization-server.zip

    2. **Resource Server**:保护实际的API,接收带有令牌的请求并验证其有效性。虽然这个项目不直接包含资源服务器,但理解它是OAuth2生态系统的一部分很重要。 3. **Client**:代表第三方应用,请求用户的授权以获取...

    spring-security-oauth2与spring-security-web 3.1.2 源码

    2. **Resource Server**: 资源服务器是持有受保护资源的应用,它使用访问令牌来验证请求并决定是否提供资源。`spring-security-oauth2`提供了与`spring-security-web`的集成,使得资源服务器能够直接使用Spring ...

    spring-security-oauth2源码

    Spring Security OAuth2 是一个强大的框架,用于为Java应用提供OAuth2和OpenID Connect安全功能。OAuth2是一个授权框架,允许第三方应用在用户许可的情况下访问其受保护的资源,而OpenID Connect则是在OAuth2之上...

    spring-core-4.1.1.RELEASE.jar

    报错:java.lang.NoClassDefFoundError: org/springframework/core/io/Resource,为缺少spring-core.jar

    spring-framework-master

    "spring-core"模块是Spring的基础,包含了IoC容器的核心类和基础工具类,如Resource接口和ClassUtils类,它们为整个框架提供了基础支持。而"AOP"模块则实现了面向切面编程,允许开发者在不修改原有代码的情况下,...

    spring-Security-oauth2.zip

    Spring Security OAuth2 是一个强大的框架,用于在Spring应用程序中实现安全性和身份验证。OAuth2 是一个授权框架,允许第三方应用获取有限的访问权限到受保护的资源,而无需分享用户名和密码。本压缩包文件“spring...

    spring-security-2.0.5

    《Spring Security 2.0.5:构建强大的企业级安全框架》 在现代软件开发中,安全性是不可或缺的重要组成部分,特别是在使用Spring框架构建的企业级应用中。Spring Security 2.0.5作为Spring生态系统的安全模块,为...

    spring-security-oauth2官网的实例sparklr2与tonr2,可运行的Java Eclipse项目文件

    - **Spring Security OAuth2组件**:例如`AuthorizationServer`(负责颁发令牌)、`ResourceServer`(保护资源)和`ClientDetailsService`(管理客户端详情)。 - **JWT(JSON Web Tokens)**:在某些配置中,OAuth2...

    spring-framework-3.0.5.RELEASE-dependencies-4

    javax.resource javax.servlet javax.transaction javax.validation javax.xml.bind javax.xml.rpc javax.xml.soap javax.xml.stream javax.xml.ws net.sourceforge.cglib net.sourceforge.ehcache ...

Global site tag (gtag.js) - Google Analytics