一.IOC原理
IOC根据官方给的意思是依赖注入,说白了,调用类的方面不用"new 类名",而是在配置文件中配置后,然后新建一个工厂类,这样在工厂类中就可以直接调用了。下面是实现IOC的过程。
1.配置spring.xml
现在都用注解了,但是内部实现方式应该是相同的
<bean id="user" class="cn.cbb.ioc.User"></bean>
2.新建main方式直接调用。
ApplicationContext cta = new ClassPathXmlApplicationContext("spring.xml"); City city = (City)cta.getBeanFactory().getBean("City");
3.原理
1.新建一个factory工厂类。
2.从spring.xml中取出配置,获取标签,通过控制反转得到类的Class。
3.将得到的Class对象注入到factory工厂类中。
4.从工厂类中通过类.方法就可以调用。
二.ApplicationContext 和FactoryBean
FactoryBean:是工厂类的接口,只有在调用时才被载入。
ApplicationContext :实现了FactoryBean接口,在项目初始化时就被载入。同时又传递上下文和资源访问的能力。
以下是FactoryBean的类图。他们完成的功能基本相同,只不过他们的侧重点不同,具体的侧重点大家可以去这位老哥这去研究研究 https://blog.csdn.net/qq_34090008/article/details/78772189
三.BeanFactory和FactoryBean的区别
BeanFactory:是Ioc最基本的接口,用于新建一个工厂类管理spring下的组件。
FactoryBean:是一个bean,是BeanFactory的组件,只不过比较特殊,是一个工厂Bean。同时从spring 的ApplicationContext中取出的是FactoryBean的工厂类,而不是FactoryBean本身。如果需要获得本身则加入。