Spring 是根據(jù)配置文件在運(yùn)行時(shí)生成bean對象的,其基本原理是用了Java 的refelection機(jī)制,我們看看java簡單實(shí)現(xiàn)一個(gè)動態(tài)設(shè)置屬性的例子

Class?cls=Class.forName("com.entiy.User");

Method?method
=cls.getMethod("SetName",Class?[]{String.class});

?? Object?obj
=cls.newInstance();
?method.invoke(obj,
new?Object[]{"Erica"})

????
return?obj;????????//設(shè)置屬性后返回對象(只配置一次)


上面我們同過refelection動態(tài)的調(diào)用了User對象的SetName()方法設(shè)置其name屬性。假設(shè)這些屬性都是通過配置文件讀入的,則我們實(shí)現(xiàn)了一個(gè)最簡單的BeanWrapper。

spring 的BeanWrapper源理相信大家也大體對比中有了理解
Class?cls=Class.forName("com.entiy.User");
Object?obj
=cls.newInstance();

BeanWrapper?bw
=new?BeanwrapperImp(obj);
bw.setProperty(
"name","Eriica");