ByteArrayResource:通过byte 数组构建Resource
public class ByteArrayResource extends AbstractResource { private final byte[] byteArray; private final String description; /** * This implementation returns a ByteArrayInputStream for the * underlying byte array. * @see java.io.ByteArrayInputStream */ public InputStream getInputStream() throws IOException { return new ByteArrayInputStream(this.byteArray); } }
FileSystemResource:文件资源,可读写
public class FileSystemResource extends AbstractResource implements WritableResource { private final File file; private final String path; /** * This implementation opens a FileInputStream for the underlying file. * @see java.io.FileInputStream */ public InputStream getInputStream() throws IOException { return new FileInputStream(this.file); } /** * This implementation opens a FileOutputStream for the underlying file. * WritableResouce接口方法 * @see java.io.FileOutputStream */ public OutputStream getOutputStream() throws IOException { return new FileOutputStream(this.file); } /** * Create a new FileSystemResource from a file path. * <p>Note: When building relative resources via {@link #createRelative}, * it makes a difference whether the specified resource base path here * ends with a slash or not. In the case of "C:/dir1/", relative paths * will be built underneath that root: e.g. relative path "dir2" -> * "C:/dir1/dir2". In the case of "C:/dir1", relative paths will apply * at the same directory level: relative path "dir2" -> "C:/dir2". * @param path a file path */ public FileSystemResource(String path) { Assert.notNull(path, "Path must not be null"); this.file = new File(path); this.path = StringUtils.cleanPath(path);//路径处理:如前缀,..等 } }
ClassPathResource:
通过给定的classLoader或者class加载资源文件
public class ClassPathResource extends AbstractFileResolvingResource { private final String path; private ClassLoader classLoader; private Class<?> clazz; public ClassPathResource(String path, ClassLoader classLoader) { Assert.notNull(path, "Path must not be null"); String pathToUse = StringUtils.cleanPath(path); if (pathToUse.startsWith("/")) { pathToUse = pathToUse.substring(1); } this.path = pathToUse; //classLoader为空,则初始化当前线程的classLoader Thread.currentThread().getContextClassLoader(); this.classLoader = (classLoader != null ? classLoader : ClassUtils.getDefaultClassLoader()); } }
资源文件方式:
/** * This implementation opens an InputStream for the given class path resource. * @see java.lang.ClassLoader#getResourceAsStream(String) * @see java.lang.Class#getResourceAsStream(String) */ public InputStream getInputStream() throws IOException { InputStream is; if (this.clazz != null) { is = this.clazz.getResourceAsStream(this.path); } else { is = this.classLoader.getResourceAsStream(this.path); } if (is == null) { throw new FileNotFoundException( getDescription() + " cannot be opened because it does not exist"); } return is; }
相关推荐
org.springframework.web.context.support.ServletContextResource.class org.springframework.web.context.support.ServletContextResourceLoader.class org.springframework.web.context.support....
Praise for the Third Edition of Spring in Action Preface Acknowledgments About this Book 1. Core Spring Chapter 1. Springing into action 1.1. Simplifying Java development 1.1.1. Unleashing the power ...
例如,可以使用 `<import resource="${JAVA_HOME}/com/bank/service/${env}-config.xml"/>` 来动态导入正确的配置文件。这种方式简化了配置管理,使得应用程序能够更加平滑地适应不同的运行环境。 #### 六、...
理解并熟练运用`@Autowired`和`@Resource`可以极大地提升Spring应用的可维护性和灵活性。在编写代码时,要根据需求选择合适的注解,并注意避免注入冲突。通过阅读和理解源码,我们可以更好地掌握Spring自动装配的...
主要介绍了javax.annotation.Resource注解的详解的相关资料,需要的朋友可以参考下
查找过程主要是通过`ClassPathResource`类来实现的,它尝试使用当前的类加载器(`ClassLoader`)找到资源。如果类加载器找不到配置文件,`exists()`方法返回`false`,这意味着配置文件未被识别或加载。在这个例子中,...
3. `org.springframework.core.io`: 这个包提供了I/O资源抽象,如`Resource`接口,支持URL、文件、流等多种资源访问方式。`ResourceLoader`则提供了加载资源的通用方法。 4. `org.springframework.core.log`: 提供...
《Spring Web 框架详解》 在Java的Web开发领域,Spring框架是不可或缺的重要工具,而`org.springframework.web.jar`则是Spring框架的核心组件之一,主要用于构建和管理Web应用程序。这个JAR文件包含了Spring Web...
在 Spring 3.x 中,提供了两种用于属性装配的注解:@Autowired 和 @Resource。 1. @Autowired @Autowired 注解用于自动装配依赖项,默认按照类型匹配的方式(byType)进行注入。可以用于成员变量、setter 方法、...
Error creating bean with name 'org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0' defined in ServletContext resource [/WEB-INF/springMVC-servlet.xml]: Initialization of bean failed;...
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> implementation="org.apache.maven.plugins.shade.resource....
## Spring入门学习 首先认识下Spring的结构 ![架构图](http://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/image001.gif) 然后我们皆可以写我们的demo了 ### 我们的Bean类 对于bean的理解,希望...
<property name="resourceLocations"> <value>file:./compass_mapping <prop key="compass.engine.connection">file:./compass_data <prop key="compass.gps.device">hibernate ``` 然后,...
<mapper resource="com/example/mapper/UserMapper.xml"/> ``` 接着,创建实体类(例如`User`),Mapper接口(例如`UserMapper`)以及对应的XML映射文件。例如: ```java // User.java public class User { ...
为了提供本地化的内容,我们需要创建资源包(Resource Bundle),这些包包含了不同语言下的文本消息。资源包通常以`.properties`文件形式存在,例如`messages_zh_CN.properties`(中文)和`messages_en_US....
InputStream inputStream = resource.getInputStream(); Properties properties = new Properties(); properties.load(inputStream); ``` 在上述代码中,`application.properties`文件被加载为一个`Properties`对象...
spring-resource-handling, Spring Framework 4.1资源处理示例 spring-资源处理 这里应用程序演示 Spring Framework 4.1中的新资源处理功能。 它最初是为在 4.1中讨论资源而开发的,在 SpringOne2GX 2014中讨论。...
在IT行业中,Spring框架是Java企业级应用开发的首选框架,尤其在2.0版本之后,它引入了许多重要特性,极大地提升了开发效率和代码质量。本文将深入探讨Spring 2.0的第一个程序以及IoC(Inversion of Control,控制...
同时,我们还需要在Spring配置中启用MyBatis的支持,通过`@MapperScan`注解扫描Mapper接口,并通过`@Resource`或`@Autowired`注解将Mapper注入到Service层。 Service层是我们处理业务逻辑的地方,通常我们会定义...
在Spring框架中,`@Resource`注解是一个重要的组件注入工具,主要用于管理bean之间的依赖关系。这个注解来源于JSR 250规范,被Spring框架所支持并扩展。在这个"spring使用resource注解的demo"中,我们将深入探讨如何...