思路:可以用java的内省获取bean的属性描述器ps(bean的全部属性),若其中属性pd(ps中的一个)和从配置文件解析出的bean的某个属性相等,则Method method=pd.getWriteMethod( ),那么这个method就是那个属性的set方法
PropertyDescriptor[] ps = Introspector.getBeanInfo(bean.getClass()).getPropertyDescriptors();
for(PropDef propDef : beanDef.getPropertys()){ //beanDef是我们昨天设计出用来存放解析bean的list
for(PropertyDescriptor pd : ps){
if(propDef.getName().equals(pd.getName())){//PropDef是我们昨天设计出用来存放bean下面的property的 list
Method setter = pd.getWriteMethod();//获取属性的setter方法 ,p
Object value = map.get(proDef.getRef());
setter.invoke(bean, value);//把引用对象注入到属性
}
}
}
for(PropDef propDef : beanDef.getPropertys()){ //beanDef是我们昨天设计出用来存放解析bean的list
for(PropertyDescriptor pd : ps){
if(propDef.getName().equals(pd.getName())){//PropDef是我们昨天设计出用来存放bean下面的property的 list
Method setter = pd.getWriteMethod();//获取属性的setter方法 ,p
Object value = map.get(proDef.getRef());
setter.invoke(bean, value);//把引用对象注入到属性
}
}
}