主要过程也就是这样:

参考下面代码:
1.读取xml配置文件*/
// 创建SAXReader对象
SAXReader reader = new SAXReader();
// 读取文件 转换成Document,获取当前项目路径
Document document = reader.read(this.getClass().getClassLoader().getResourceAsStream(XmlPath));
//获取节点对象
Element rootElement = document.getRootElement();
//找出根节点的所有element元素
List<Element> elements = rootElement.elements();
Object instance=null;
if(elements!=null){
//2.获取每个bean配置,获取class
for (Element sonElement:elements) {
//获得beanid
String sonbenId = sonElement.attributeValue("id");
if(!beanId.equals(sonbenId)){
continue;
}
//通过sonElement获得class
String beanClassPath = sonElement.attributeValue("class");
//3.拿到class地址,进行反射实例化对象,再通过反射api为私有变量赋值
Class<?> forName = Class.forName(beanClassPath);
//实例化class
instance = forName.newInstance();
//拿到成员属性
List<Element> sonSonEleList = sonElement.elements();
for (Element sonSonEle: sonSonEleList) {
//获取每个bean中的id,name
String name = sonSonEle.attributeValue("name");
String value = sonSonEle.attributeValue("value");
//使用反射为name和value进行赋值
*//*Field fieldName = forName.getDeclaredField(name);*//*
Field fieldName = forName.getDeclaredField(name);
fieldName.setAccessible(true);
fieldName.set(instance,value);
}
}
}
return instance;
本文详细解析了Spring框架中IoC容器的工作原理,包括读取XML配置文件、实例化Bean、依赖注入等关键步骤,通过代码示例深入浅出地介绍了Spring如何管理对象的生命周期。
21万+

被折叠的 条评论
为什么被折叠?



