前言在学习了Spring之后,我对其工作原理产生了浓厚的兴趣。最近通过看视频了解了一些SpringIOC容器的工作原理,边打磨边制作了一个非常简单的SpringIOC容器,实现了他的。XML文件组装、java代码组装和自动组装功能,以下思路和代码一、仿XML形式的组装思路一、思路在使用XML组装bean时,Spring会解析applicationContext.xml文件,将各种类型的bean注入到IOC中容器,容器中的bean可以无数次重复调用,无需多次重复新建对象,大大提高了系统效率。为了模仿IOC,我们使用Map集合来存放需要的bean,并新建一个conf.properties文件来存放信息,存放com.wql.dao.userDao=com.wql.daoImpl.userDaoImpl_java训练等数据信息在获取bean之前解析conf.properties文件中的信息,使用反射技术将conf.properties文件中的内容以Class.forName的形式解析成Class对象并放入collectionmap中,这样每次获取对象获取后,会从map中获取,无需new2。具体代码实现conf.properties:com.wql.dao.userDao=com.wql.daoImpl.userDaoImplcom.wql.service.userService=com.wql.serviceImpl.userServiceImplMyApplicationContext类代码实现:packagecom.wql.application;importjava.io.InputStream;importjava.util.HashMap;importjava.util.Map;importjava.util.Properties;importjava.util.Set;publicclassMyApplicationContext{//模拟IOC容器privateMapmap=newHashMap<>();privateStringResourcePath;privateStringfilepath;publicMyApplicationContext(){}publicMyApplicationContext(StringresourcePath){ResourcePath=resourcePath;}//获取未知类型的对象(通过map集合)publicTgetBean(Classclazz){return(T)map.get(clazz);}//通过properties中存储的键值对获取Class对象,注入到map集合中Propertiesproperties=newProperties();properties.load(stream);//获取内容Set