Spring 是根据配置文件在运行时生成bean对象的,其基本原理是用了Java 的refelection机制,我们看看java简单实现一个动态设置属性的例子

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;         // 设置属性后返回对象(只配置一次)


上面我们同过refelection动态的调用了User对象的SetName()方法设置其name属性。假设这些属性都是通过配置文件读入的,则我们实现了一个最简单的BeanWrapper。

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

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