Ioc个人理解_spring

一.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

Ioc个人理解_restful_02

三.BeanFactory和FactoryBean的区别

BeanFactory:是Ioc最基本的接口,用于新建一个工厂类管理spring下的组件。

FactoryBean:是一个bean,是BeanFactory的组件,只不过比较特殊,是一个工厂Bean。同时从spring 的ApplicationContext中取出的是FactoryBean的工厂类,而不是FactoryBean本身。如果需要获得本身则加入。