编辑: 山南水北 | 2017-10-12 |
private Employee managingDirector;
public String getName() { return this.name;
} public void setName(String name) { this.name = name;
} public Employee getManagingDirector() { return this.managingDirector;
} public void setManagingDirector(Employee managingDirector) { this.managingDirector = managingDirector;
http://xglw.51.net/5team/springframework Spring reference 中文版 1.0 } } public class Employee { private float salary;
public float getSalary() { return salary;
} public void setSalary(float salary) { this.salary = salary;
} } 下面的代码片断展示如何检索和操作 Companies 类和 Employees 类实例属性的几个例子. Company c = new Company();
BeanWrapper bwComp = BeanWrapperImpl(c);
// setting the company name... bwComp.setPropertyValue( name , Some Company Inc. );
// ... can also be done like this: PropertyValue v = new PropertyValue( name , Some Company Inc. );
bwComp.setPropertyValue(v);
// ok, let'
s create the director and tie it to the company: Employee jim = new Employee();
BeanWrapper bwJim = BeanWrapperImpl(jim);
bwJim.setPropertyValue( name , Jim Stravinsky );
bwComp.setPropertyValue( managingDirector , jim);
// retrieving the salary of the managingDirector through the company Float salary = (Float)bwComp.getPropertyValue( managingDirector.salary );
3.2.2. 使用 PropertyEditors 包转换属性 有时候,为了使用方便,我们需要以另一种形式展现对象的属性.例如,日期可以以一种更容易 阅读的形式表现出来,同时我们也会将人们熟悉的格式转换回原始的日期格式(或者使用一个更好的 办法:将所有用户偏好形式转换回统一的 java.util.Date 对象).为了达到这一目的,我们可以编 写自定义编辑器, 使其继承 java.beans.PropertyEditor 类型, 并将自定义编辑器注册到 BeanWrapper 上.通过注册, BeanWrapper 将知道 如何把属性转换所需类型的信息 .请阅读 Sun 公司提供的 java.beans 包中 PropertyEditors 的JavaDoc 获得进一步信息. 下面的例子将使用 PropertyEditor,把java.util.Date 对象转换为人们习惯的形式: /** Details in this class are excluded for brevity */ http://xglw.51.net/5team/springframework Spring reference 中文版 1.0 public class Person { public void setBirthDay(Date d);
public Date getBirthDay();
} /** and some other method */ public void doIt() { SimpleDateFormat df = new SimpleDateFormat( dd-MM-yyyy );
// CustomDateEditor located in org.springframework.beans.propertyeditors // true indicated that null values are NOT allowed CustomDateEditor editor = new CustomDateEditor(df, false);
Person p = new Person();
BeanWrapper bw = new BeanWrapper(p);
bw.registerCustomEditor(editor);
// this will convert the String to the desired object type: java.util.Date! bw.setPropertyValue( birthDay , 22-12-1966 );
} PropertyEditors的观念无论是对于MVC框架还是对于Spring框架中的其他部分都非常重要, 所以 在这个文档的剩余部分还会多次出现这个概念.更多的有关自定义编辑器的信息请参考JavaBeans规范(http://java.sun.com/products/javabeans). 3.2.3. 事件传播 TODO: some info on changelisteners and things like that 3.2.4. 其他有用特性 除了以上你所看到的特性,别的一些东西或许也会引起你的兴趣,虽然这些特性不太值得用完整的 一节来介绍. 决定属性是否可读写:你可以使用 isReadable()和isWritable()方法决定一个属性是否可以被 读写. 检索属性描述符:你可以使用 getPropertyDescriptor(String) and getPropertyDescriptors() 方法检索 java.beans.PropertyDescriptor 类型对象的属性描述符,有时这是一个很方便的功 能. http://xglw.51.net/5team/springframework Spring reference 中文版 1.0 3.3.The BeanFactory org.springframework.beans.factory包及其子包提供了SpringIoC容器的基础.Spring的BeanFactory接口支持IoC类型