设计模式(三十)----综合应用-自定义Spring框架-自定义Spring IOC-定义bean/注册表相关类

科技资讯 投稿 9200 0 评论

设计模式(三十)----综合应用-自定义Spring框架-自定义Spring IOC-定义bean/注册表相关类

现要对下面的配置文件进行解析,并自定义Spring框架的IOC对涉及到的对象进行管理。

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"></property>
    </bean>
    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean>
</beans>

1 定义bean相关的pojo类

1.1 PropertyValue类

用于封装bean的属性,体现到上面的配置文件就是封装bean标签的子标签property标签数据。

/**
 * @version v1.0
 * @ClassName: PropertyValue
 * @Description: 用来封装bean标签下的property标签的属性
 *              name属性
 *              ref属性
 *              value属性 : 给基本数据类型及String类型数据赋的值
 */
public class PropertyValue {
​
  private String name;
  private String ref;
  private String value;
​
  public PropertyValue( {
  }
​
  public PropertyValue(String name, String ref,String value {
    this.name = name;
    this.ref = ref;
    this.value = value;
  }
​
  public String getName( {
    return name;
  }
​
  public void setName(String name {
    this.name = name;
  }
​
  public String getRef( {
    return ref;
  }
​
  public void setRef(String ref {
    this.ref = ref;
  }
​
  public String getValue( {
    return value;
  }
​
  public void setValue(String value {
    this.value = value;
  }
}

1.2 MutablePropertyValues类

一个bean标签可以有多个property子标签,所以再定义一个MutablePropertyValues类,用来存储并管理多个PropertyValue对象。

/**
 * @version v1.0
 * @ClassName: MutablePropertyValues
 * @Description: 用户存储和管理多个PropertyValue对象
 */
public class MutablePropertyValues implements Iterable<PropertyValue> {
​
    //定义list集合对象,用来存储PropertyValue对象
    private final List<PropertyValue> propertyValueList;
​
    public MutablePropertyValues( {
        this.propertyValueList = new ArrayList<PropertyValue>(;
    }
​
    public MutablePropertyValues(List<PropertyValue> propertyValueList {
        this.propertyValueList = (propertyValueList != null ? propertyValueList : new ArrayList<PropertyValue>(;
    }
​
    //获取所有的PropertyValue对象,返回以数组的形式
    public PropertyValue[] getPropertyValues( {
        //将集合转换为数组并返回
        return this.propertyValueList.toArray(new PropertyValue[0];
    }
​
    //根据name属性值获取PropertyValue对象
    public PropertyValue getPropertyValue(String propertyName {
        //遍历集合对象
        for (PropertyValue pv : this.propertyValueList {
            if (pv.getName(.equals(propertyName {
                return pv;
            }
        }
        return null;
    }
​
    //获取迭代器对象
    @Override
    public Iterator<PropertyValue> iterator( {
        return propertyValueList.iterator(;
    }
​
    //判断集合是否为空
    public boolean isEmpty( {
        return this.propertyValueList.

编程笔记 » 设计模式(三十)----综合应用-自定义Spring框架-自定义Spring IOC-定义bean/注册表相关类

赞同 (49) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽