BeanWrapper这个类一般不会被Spring的使用者直接调用,而是使用DataBinder和BeanFactory这两个类是间接被调用的。但是知道BeanWrapper的使用方式对于理解Spring的数据绑定机制还是十分用益的。下面我们就来看个BeanWrapper被直接调用的例子:
- //首先是两个对象类Company Employee
- 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;
- }
- }
- BeanWrapper company = BeanWrapperImpl(new Company());
- // setting the company name..
- company.setPropertyValue("name", "Some Company Inc.");
- // ... can also be done like this:
- PropertyValue value = new PropertyValue("name", "Some Company Inc.");
- company.setPropertyValue(value);
- // ok, let's create the director and tie it to the company:
- BeanWrapper jim = BeanWrapperImpl(new Employee());
- jim.setPropertyValue("name", "Jim Stravinsky");
- company.setPropertyValue("managingDirector", jim.getWrappedInstance());
- // retrieving the salary of the managingDirector through the company
- Float salary = (Float) company.getPropertyValue("managingDirector.salary");