Spring的 Resource
接口是为了提供更强的访问底层资源能力的抽象。
Resource
接口一些比较重要的方法如下:
-
getInputStream()
: 定位并打开资源,返回读取此资源的一个 InputStream
。每次调用预期会返回一个新的 InputStream
,由调用者负责关闭这个流。
-
exists()
: 返回标识这个资源在物理上是否的确存在的 boolean
值。
-
isOpen()
: 返回标识这个资源是否有已打开流的处理类的 boolean
值。如果为 true
,则此InputStream
就不能被多次读取,而且只能被读取一次然后关闭以避免资源泄漏。除了 InputStreamResource
,常见的resource实现都会返回 false
。
-
getDescription()
:
返回资源的描述,一般在与此资源相关的错误输出时使用。此描述通常是完整的文件名或实际的URL地址。
把Resource
作为属性来配置
<bean id="myBean" class="...">
<property name="template" value="some/resource/path/myTemplate.txt"/>
</bean>
例子:
package com.chenhailong.resource;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.core.io.Resource;
/**
*
* @author cnchenhl
* Aug 22, 2011
*/
public class SpringResource {
public static void main(String[] args) throws IOException {
ApplicationContext cxt = new FileSystemXmlApplicationContext();
Resource rs = cxt.getResource("1.txt");
File file = rs.getFile();
System.out.println(file.getAbsoluteFile());
BufferedReader reader = new BufferedReader(new FileReader(file));
while (reader.ready()) {
System.out.println(reader.readLine());
}
reader.close();
ApplicationContext cxtClass = new ClassPathXmlApplicationContext();
Resource template = cxtClass.getResource("classpath:1.txt");
InputStream inputStream = template.getInputStream();
BufferedReader readerClassStream = new BufferedReader(new InputStreamReader(inputStream));
while (readerClassStream.ready()) {
System.out.println(readerClassStream.readLine());
}
File fileClass = template.getFile();
System.out.println(fileClass.getAbsolutePath());
BufferedReader readerClass = new BufferedReader(new FileReader(file));
while (readerClass.ready()) {
System.out.println(readerClass.readLine());
}
}
}
Validator的使用:
package com.chenhailong.validator;
/**
* @author cnchenhl
* Aug 22, 2011
*/
public class Person {
private String name;
private int age;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
}
package com.chenhailong.validator;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
/**
* @author cnchenhl
* Aug 22, 2011
*/
public class PersonValidator implements Validator {
@Override
public boolean supports(Class clazz) {
return Person.class.equals(clazz);
}
@Override
public void validate(Object obj, Errors e) {
ValidationUtils.rejectIfEmpty(e, "name", "name.empty");
Person p = (Person) obj;
if (p.getAge() < 0) {
e.rejectValue("age", "negativevalue");
} else if (p.getAge() > 100) {
e.rejectValue("age", "too.darn.old");
}
}
}
package com.chenhailong.validator;
import java.util.List;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.validation.ObjectError;
/**
* @author cnchenhl
* Aug 22, 2011
*/
public class SpringValidator {
/**
* @param args
*/
public static void main(String[] args) {
PersonValidator pv = new PersonValidator();
Person person = new Person();
person.setAge(-10);
person.setName("");
pv.supports(Person.class);
Errors e = new BindException(person, "person");
pv.validate(person, e);
List list = e.getAllErrors();
for (int i = 0; i < list.size(); i++) {
System.out.println(((ObjectError) list.get(i)).getCode());
}
}
}
分享到:
相关推荐
13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 13.9.11. hidden标签...
What’s New in Spring Framework 4.x .................................................................................... 16 3. New Features and Enhancements in Spring Framework 4.0 .....................
What’s New in Spring Framework 4.x .................................................................................... 16 3. New Features and Enhancements in Spring Framework 4.0 .....................
在本文中,我们将深入探讨如何将Spring 4.1.7与MyBatis 3.4.0进行整合,这是一个常见的Java开发任务,用于构建高效、灵活的企业级应用程序。Spring作为一个全面的框架,提供了依赖注入(DI)和面向切面编程(AOP),...
13.11.2. 对模型的支持:ModelMap (ModelAndView) 13.11.3. 对视图的支持: RequestToViewNameTranslator 13.12. 其它资源 14. 集成视图技术 14.1. 简介 14.2. JSP和JSTL 14.2.1. 视图解析器 14.2.2. 'Plain-...
13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. checkboxes标签 13.9.6. radiobutton标签 13.9.7. radiobuttons标签 13.9.8. password标签 13.9.9. select标签 13.9.10. option标签 ...
11.7.2. 处理BLOB 和 CLOB对象 11.7.3. 在IN语句中传入一组参数值 11.7.4. 处理复杂类型的存储过程调用 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate 12.2.1. 资源管理 12.2.2. 在Spring容器中...
最后,Spring Expression Language (SpEL)部分介绍了Spring表达式语言,它是一个强大的表达式语言,支持在运行时查询和操作对象图。它具有多种特性,比如方法调用、访问属性以及逻辑和算数运算等。SpEL支持在XML配置...
Spring Framework还引入了Spring Expression Language(SpEL),这是一种强大的表达式语言,它支持在运行时查询和操作对象图。SpEL可以用于bean定义中,为bean属性设置值,也可以在运行时查询和操作对象属性。 ...
13.9.2. form标签 13.9.3. input标签 13.9.4. checkbox标签 13.9.5. radiobutton标签 13.9.6. password标签 13.9.7. select标签 13.9.8. option标签 13.9.9. options标签 13.9.10. textarea标签 13.9.11. ...
SpEL是Spring Expression Language的缩写,它是用于在运行时查询和操作对象图的表达式语言。SpEL提供了丰富的表达式功能,支持在XML和注解配置中使用,也可以在编程式地使用Spring Bean时使用。 ### 总结 Spring ...
### Spring Framework 4.x 关键知识点解析 #### I. Spring Framework 总览 **1.1 介绍Spring Framework** Spring Framework 是一个开源的企业级 Java 应用程序框架,旨在简化企业级应用程序的开发过程。它提供了...
- **Java 8 支持**:利用 Java 8 的新特性,如 Lambda 表达式和流操作。 - **Java EE 6 和 7**:更好地与 Java EE 规范兼容,例如支持 Servlet 3.1 和 WebSocket。 - **Groovy Bean Definition DSL**:提供了 ...
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> </plug-in> ``` ##### 9. 拆分Spring配置文件 Spring配置文件同样建议拆分,以实现更加清晰的管理。可以在...
<mapping resource="User.hbm.xml"/> </session-factory> </hibernate-configuration> ``` #### 五、总结 通过以上步骤,我们可以看到SSH三大框架的jar包配置相对较为复杂,但只要按照正确的方式进行设置,就能够...
根据提供的信息,我们可以深入探讨Spring Framework 4的相关知识点,包括其概述、新特性及核心技术。 ### Spring Framework 总览 Spring Framework 是一个开源框架,它为Java应用提供了全面的基础设施支持,从web...
本系统是基于RBAC授权和基于用户授权的细粒度权限控制通用平台,并提供单点登录、会话管理和日志管理。接入的系统可自由定义组织、角色、权限、资源等。用户权限=所拥有角色权限合集+用户加权限-用户减权限,优先级...
2. @PreDestroy:与@PostConstruct相对,@PreDestroy注解标记的方法会在对象销毁前被调用,提供了一个清理资源或执行其他必要操作的机会。 3. @Resource:此注解用于注入依赖,它可以自动查找匹配的bean并将其注入...
然而,随着时间的推移,Struts 1.x 因为其局限性和安全问题,逐渐被Struts 2 和其他现代框架如Spring MVC、Play Framework等取代。尽管如此,了解 Struts 1.x 的基础知识对于理解Java Web开发的历史和演变仍然非常有...
### Spring5.1中文参考指南知识点汇总 #### 一、Spring框架概述 ...以上内容仅为Spring5.1中文参考指南的部分精华知识点,对于想要深入了解Spring框架的开发者来说,这份指南提供了非常全面且深入的技术指导。