通过spring的BeanWrapper来设置对象属性

假如有下面这两个类:

public class Company {

    private String name;
    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;
    }
}
public class Employee {

    private String name;

    private float salary;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public float getSalary() {
        return salary;
    }

    public void setSalary(float salary) {
        this.salary = salary;
    }
}

下面的代码快照向你展示了如何获取和操作已经实例化的CompaniesEmployees的属性。

Table 7.1. 属性的例子

表达式 解释(说明)

name

表示通过方法getName()isName()setName(..)来操作属性name

account.name

表示通过方法getAccount().setName()getAccount().getName()来操作account的嵌套属性name

account[2]

表示索引属性account的第三个元素。能被索引的属性可以是array, list或者其他实现了有序集合的类型。

account[COMPANYNAME]

表示指定Map accountCOMPANYNAME为键的值


BeanWrapper company = BeanWrapperImpl(new Company());
// 设置公司名称..
company.setPropertyValue("name", "Some Company Inc.");
// ...也可以像这样做:
PropertyValue value = new PropertyValue("name", "Some Company Inc.");
company.setPropertyValue(value);

// 现在我们来创建一个主管并把它绑定到公司上:
BeanWrapper jim = BeanWrapperImpl(new Employee());
jim.setPropertyValue("name", "Jim Stravinsky");
company.setPropertyValue("managingDirector", jim.getWrappedInstance());

// 通过公司属性来获取主管的薪水
Float salary = (Float) company.getPropertyValue("managingDirector.salary");

你可能感兴趣的:(spring应用)