`

Spring 2.X 深入了解 ------->Resource操作和Validator

 
阅读更多

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());
        }
    }

}
 
0
1
分享到:
评论

相关推荐

    Spring-Reference_zh_CN(Spring中文参考手册)

    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标签...

    spring-framework-reference-4.1.2

    What’s New in Spring Framework 4.x .................................................................................... 16 3. New Features and Enhancements in Spring Framework 4.0 .....................

    spring-framework-reference4.1.4

    What’s New in Spring Framework 4.x .................................................................................... 16 3. New Features and Enhancements in Spring Framework 4.0 .....................

    spring和mybatis整合代码

    在本文中,我们将深入探讨如何将Spring 4.1.7与MyBatis 3.4.0进行整合,这是一个常见的Java开发任务,用于构建高效、灵活的企业级应用程序。Spring作为一个全面的框架,提供了依赖注入(DI)和面向切面编程(AOP),...

    spring chm文档

    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-...

    Spring中文帮助文档

    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标签 ...

    Spring API

    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-framework-4-reference

    最后,Spring Expression Language (SpEL)部分介绍了Spring表达式语言,它是一个强大的表达式语言,支持在运行时查询和操作对象图。它具有多种特性,比如方法调用、访问属性以及逻辑和算数运算等。SpEL支持在XML配置...

    Spring 2.0 开发参考手册

    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. ...

    spring-framework-4-reference.pdf

    Spring Framework还引入了Spring Expression Language(SpEL),这是一种强大的表达式语言,它支持在运行时查询和操作对象图。SpEL可以用于bean定义中,为bean属性设置值,也可以在运行时查询和操作对象属性。 ...

    spring framewok 4参考文档

    SpEL是Spring Expression Language的缩写,它是用于在运行时查询和操作对象图的表达式语言。SpEL提供了丰富的表达式功能,支持在XML和注解配置中使用,也可以在编程式地使用Spring Bean时使用。 ### 总结 Spring ...

    Spring-Framework-4.x参考文档.pdf

    ### Spring Framework 4.x 关键知识点解析 #### I. Spring Framework 总览 **1.1 介绍Spring Framework** Spring Framework 是一个开源的企业级 Java 应用程序框架,旨在简化企业级应用程序的开发过程。它提供了...

    spring-framework-4-reference 中文文档

    - **Java 8 支持**:利用 Java 8 的新特性,如 Lambda 表达式和流操作。 - **Java EE 6 和 7**:更好地与 Java EE 规范兼容,例如支持 Servlet 3.1 和 WebSocket。 - **Groovy Bean Definition DSL**:提供了 ...

    SSHA环境的搭建.doc

    &lt;set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/&gt; &lt;/plug-in&gt; ``` ##### 9. 拆分Spring配置文件 Spring配置文件同样建议拆分,以实现更加清晰的管理。可以在...

    SSH三大框架的jar包的具体配置

    &lt;mapping resource="User.hbm.xml"/&gt; &lt;/session-factory&gt; &lt;/hibernate-configuration&gt; ``` #### 五、总结 通过以上步骤,我们可以看到SSH三大框架的jar包配置相对较为复杂,但只要按照正确的方式进行设置,就能够...

    spring-frame-4-reference

    根据提供的信息,我们可以深入探讨Spring Framework 4的相关知识点,包括其概述、新特性及核心技术。 ### Spring Framework 总览 Spring Framework 是一个开源框架,它为Java应用提供了全面的基础设施支持,从web...

    单点登录源码

    本系统是基于RBAC授权和基于用户授权的细粒度权限控制通用平台,并提供单点登录、会话管理和日志管理。接入的系统可自由定义组织、角色、权限、资源等。用户权限=所拥有角色权限合集+用户加权限-用户减权限,优先级...

    javax.annotation-3.1.2.2-sources.jar.zip

    2. @PreDestroy:与@PostConstruct相对,@PreDestroy注解标记的方法会在对象销毁前被调用,提供了一个清理资源或执行其他必要操作的机会。 3. @Resource:此注解用于注入依赖,它可以自动查找匹配的bean并将其注入...

    java Struts 1.x 框架 Web 开发

    然而,随着时间的推移,Struts 1.x 因为其局限性和安全问题,逐渐被Struts 2 和其他现代框架如Spring MVC、Play Framework等取代。尽管如此,了解 Struts 1.x 的基础知识对于理解Java Web开发的历史和演变仍然非常有...

    Spring5.1中文参考指南.pdf

    ### Spring5.1中文参考指南知识点汇总 #### 一、Spring框架概述 ...以上内容仅为Spring5.1中文参考指南的部分精华知识点,对于想要深入了解Spring框架的开发者来说,这份指南提供了非常全面且深入的技术指导。

Global site tag (gtag.js) - Google Analytics