type
status
date
slug
summary
tags
category
icon
password
需求
模拟一个简单的spring容器,通过读取beans.xml,获取第一个javabean对象,并给该对象赋值,放到容器中,输出该对象。
思路分析
LsbApplicationContext.java容器,有属性ConcurrentHashMap,singletonObjects
- 解析beans.xml(使用Dom4j)
- 得到第一个bean的信息id,class,属性和属性值
- 使用反射生成对象,并赋值
- 将创建好的bean对象放入到singletonObject集合中
- 提供getBean(id),可以返回对应的对象
主要目的,可以对spring的流程有一个简单的了解
主要流程
- 创建ApplicationContext
- 提供一个构造器,入参是
beans.xml
路径
- 解析xml,拿到类路径和属性值
- 通过反射创建对象并给属性赋值
- 将创建好的对象放入单例池
- getBean(),通过id从单例池中获取对象
Spring容器结构

image-20230118171726432
代码
https://github.com/MisteryLiuCode/Spring