一)如何使用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还提供了一些其他的配置选项,例如resource delimiter、编码设置等。这些配置选项可以帮助开发者更好地控制项目的构建和测试过程。 spring-boot-starter-parent是一个非常实用的依赖项...
使用spring-cloud-security-oauth2来实现oauth server和resource server,oauth Server和resource Server分开,resource Server实现了两种方式
spring-resource-handling, Spring Framework 4.1资源处理示例 spring-资源处理 这里应用程序演示 Spring Framework 4.1中的新资源处理功能。 它最初是为在 4.1中讨论资源而开发的,在 SpringOne2GX 2014中讨论。...
OAuth2的核心概念包括客户端(Client)、资源所有者(Resource Owner)、资源服务器(Resource Server)和授权服务器(Authorization Server)。Spring Security OAuth2提供了对这些角色的支持,包括认证流程、令牌...
Spring Boot 2 Oauth2资源和授权服务器 使用用户和客户端数据库... git clone https://github.com/indrekru/spring-boot-2-oauth2-resource-server.git 您需要在您的环境中安装Maven: Mac(自制): brew install
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 Security OAuth2 是一个强大的框架,用于为Java应用提供OAuth2和OpenID Connect安全功能。OAuth2是一个授权框架,允许第三方应用在用户许可的情况下访问其受保护的资源,而OpenID Connect则是在OAuth2之上...
12. **国际化的支持(i18n)**:Spring Boot 提供了处理多语言的工具,如消息源(MessageSource)和资源包(Resource Bundle)。 13. **事件驱动和消息传递**:通过 Spring Integration 和 AMQP 支持消息队列(如 ...
### Spring Boot Maven插件导入本地JAR包并进行打包的知识点 #### 一、Spring Boot Maven插件简介 `spring-boot-maven-plugin`是Spring Boot官方提供的Maven插件,用于简化Spring Boot项目的构建过程。它支持将...
`Resource`接口和其实现类如`ClassPathResource`、`FileSystemResource`则负责读取和操作外部资源。 七、Spring表达式语言(SpEL) `spring-context`包含了强大的Spring表达式语言(SpEL),它允许在运行时对bean...
在Spring框架中,`resource`是一个非常重要的概念,它主要用于管理和访问各种类型的资源,如文件、数据库连接、网络资源等。在本场景中,我们关注的是如何利用Spring的`Resource`接口来读取配置文件。这在Java应用...
8. 注入Mapper:通过@Autowired或@Resource注解,将Mapper接口注入到需要使用的地方,即可调用其方法执行数据库操作。 本资源包“spring-mybatis-spring-1.1.0.zip”提供的正是这样一个完整的整合示例,它包含了...
2. **Resource Server**:保护实际的API,接收带有令牌的请求并验证其有效性。虽然这个项目不直接包含资源服务器,但理解它是OAuth2生态系统的一部分很重要。 3. **Client**:代表第三方应用,请求用户的授权以获取...
2. **Resource Server**: 资源服务器是持有受保护资源的应用,它使用访问令牌来验证请求并决定是否提供资源。`spring-security-oauth2`提供了与`spring-security-web`的集成,使得资源服务器能够直接使用Spring ...
报错:java.lang.NoClassDefFoundError: org/springframework/core/io/Resource,为缺少spring-core.jar
"spring-core"模块是Spring的基础,包含了IoC容器的核心类和基础工具类,如Resource接口和ClassUtils类,它们为整个框架提供了基础支持。而"AOP"模块则实现了面向切面编程,允许开发者在不修改原有代码的情况下,...
Spring Security OAuth2 是一个强大的框架,用于在Spring应用程序中实现安全性和身份验证。OAuth2 是一个授权框架,允许第三方应用获取有限的访问权限到受保护的资源,而无需分享用户名和密码。本压缩包文件“spring...
《Spring Security 2.0.5:构建强大的企业级安全框架》 在现代软件开发中,安全性是不可或缺的重要组成部分,特别是在使用Spring框架构建的企业级应用中。Spring Security 2.0.5作为Spring生态系统的安全模块,为...
- **Spring Security OAuth2组件**:例如`AuthorizationServer`(负责颁发令牌)、`ResourceServer`(保护资源)和`ClientDetailsService`(管理客户端详情)。 - **JWT(JSON Web Tokens)**:在某些配置中,OAuth2...
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 ...