问题描述
在Spring中,处理这个问题的核心是在org.springframework.beans包中。而其中最为核心的部分,则是BeanWrapper。BeanWrapper,顾名思义,就是bean的包装器。所以,它的主要工作,就是对任何一个bean,进行属性(包括内嵌属性)的设置和方法的调用。在BeanWrapper的默认实现类BeanWrapperImpl中,虽然代码较长,但完成的工作却是非常的集中的。 我们看看这个BeanWrapper是如何发挥运作的,假设我们有两个bean:publicclassCompany{ privateStringname; privateEmployeemanagingDirector; publicStringgetName(){ returnthis.name; } publicvoidsetName(Stringname){ this.name=name; } publicEmployeegetManagingDirector(){ returnthis.managingDirector; } publicvoidsetManagingDirector(EmployeemanagingDirector){ this.managingDirector=managingDirector; }}publicclassEmployee{ privatefloatsalary; publicfloatgetSalary(){ returnsalary; } publicvoidsetSalary(floatsalary){ this.salary=salary; }} 然后我们使用BeanWrapper来调用这两个bean:Companyc=newCompany();BeanWrapperbwComp=BeanWrapperImpl(c);//settingthecompanyname...bwComp.setPropertyValue("name","SomeCompanyInc.");//...canalsobedonelikethis:PropertyValuev=newPropertyValue("name","SomeCompanyInc.");bwComp.setPropertyValue(v);//ok,let'screatethedirectorandtieittothecompany://***************这段代码*****************Employeejim=newEmployee();BeanWrapperbwJim=BeanWrapperImpl(jim);bwJim.setPropertyValue("name","JimStravinsky");//<--怎么总觉得这里有错误啊?bwComp.setPropertyValue("managingDirector",jim);//****************************************//retrievingthesalaryofthemanagingDirectorthroughthecompanyFloatsalary=(Float)bwComp.getPropertyValue("managingDirector.salary");==================================================这是我在网上看到的一篇介绍spring的文章,不知道是写错了还是我没有看明白。上面的代码里写完整的话是不是应该这样的啊:Employeejim=newEmployee();BeanWrapperbwJim=BeanWrapperImpl(jim);bwJim.setPropertyValue("salary",100.00);bwComp.setPropertyValue("name","JimStravinsky");//<--那行代码是不是应该这样写才对啊?bwComp.setPropertyValue("managingDirector",jim);
解决方案
解决方案二:
BeanWrapper.setPropertyValue()这样用是什么意思?谢谢!