Spring 是根據(jù)配置文件在運(yùn)行時(shí)生成bean對(duì)象的,其基本原理是用了Java 的refelection機(jī)制,我們看看java簡單實(shí)現(xiàn)一個(gè)動(dòng)態(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è)置屬性后返回對(duì)象(只配置一次)


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

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

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