1.ioc容器就是bean工厂中的map存储结构
2.spring中工厂有很多,大体有两个applicationcontext和beanfactory**,所有工厂都实现beanFactory接口,最终的默认实现类都是defaultlistablebeanfactory** ,继承体系
3.区别,ApplicationContext 是加载完 applicationContext.xml 时就会创建其中的bean实例,而beanfactory是第一次调用方法getbean才创建
4.创建ioc容器的方式 ApplicationContext 接口常用三个实现类创建
ClassPathXmlApplicationContext:它是从类的根路径下加载配置文件,FileSystemXmlApplicationContext:它是从磁盘路径上加载配置文件
AnnotationConfigApplicationContext当我们使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。
5.不同应用下创建,java应用下 可以用applicationContext = new ClassPathXmlApplicationContext(配置文件根路径),web应用创建
6.web.xml中配置监听器主要是监听加载配置文件的,加载之后创建初始化ioc容
器 https://zhuanlan.zhihu.com/p/41274946,讲的很好,源码配合着看http://www.cnblogs.com/ITtangtang/p/3978349.html#a1
7.web.xml中的监听器监听web容器启动时触发contextInitialized,其中有初始化webcontext的方法,其中层层调用,调用到了最终初始化bean的refresh方法
8.Spring 容器真正初始化的方法就是 refresh() 方法,不管是 Web 环境还是 Java 环境,都是使用此方法
9.spring创建web上下文容器的过程
10.创建bean实例的过程
见另一篇
11.<?>表示泛型的类型可以是任何类
12.ioc容器中利用反射机制获得实例配置bean的class类全命名时,通过class.forname加载class,然后再newistance
13.简单工厂模式就是根据传入的类路径,决定创建什么类的一种模式,比如可以传入类全名名,然后通过反射获得对象实例
https://blog.csdn.net/mlc1218559742/article/details/52774805
public Object getAnimal(String className) throws Exception{
Class<?> cls = Class.forName(className);
Object obj = cls.newInstance();
return obj;
14.beanFactory本身就是简单工厂方法,在解析了xml文件后,将反射的bean实例放在currentHashmap中 key为id
模拟
https://www.cnblogs.com/leijiangtao/p/4463121.html,真实的工厂 https://blog.csdn.net/pomer_huang/article/details/79328572
15spring中涉及到的设计模式
https://blog.csdn.net/caoxiaohong1005/article/details/80039656
16.beanfactory原理简单工厂的使用,动态生成bean的过程,读取xml文件,将bean结点转化为一个个beandefinition,注册到beanfactory,然后内部通过全限定名反射或者代理生成对应的实例并返回