一、什么是IOC?有什么作用?优点是什么?
IOC是控制反转的意思,即将创建对象的控制权交给了Spring的IOC,以前是由程序员自己去创建控制对象,现在交由Spring的IOC去创建控制,如果要去使用对象,通过依赖注入就可以使用对象。优点:集中管理对象,方便维护,降低耦合度。
二、Spring IOC的实现机制是什么***
工厂模式 + 反射。
三、IOC和DI的区别是什么?**
IOC是控制反转,即把对象的创建控制交由Spring管理,以前是程序员自己管理的,耦合度比较高,不易维护和扩展,DI是IOC的实现,是IOC不可分割的一部分,用于给bean中注入各种属性,完成bean的初始化工作。
四、紧耦合和松耦合有什么区别?如何编写松耦合的代码?**
4.1、紧耦合
紧耦合是指类之间的高度依赖。
4.2、松耦合
松耦合是指通过促进单一职责和关注点分类、依赖倒置的设计原则来实现的。
五、BeanFactory的作用 *
- BeanFactory是Spring中非常核心的一个顶层接口;
- 它是Bean的工厂,它的主要职责就是生产Bean;
- 它实现了简单工厂的设计模式,通过调用getBean()传入标识生产一个Bean;
- 它有非常多的实现类,每个工厂都有不同的职责(单一职责),最强大的工厂是DefaultListableBeanFactory,Spring底层就是使用该类进行生产Bean;
- BeanFactory也是一个容器,管理着Bean的生命周期;
六、BeanDefinition的作用 *
BeanDefinition是用来定义Bean的基本信息的,决定了Bean以何种方式生产,例如:applicationContext.xml中有如下配置
<bean class="org.star.entity.User" id="user" scope="singleton" lazy="false" abstract="false" autowire="none"><property name="username" value="zhangsan"></property>
</bean>
后续BeanFactory就可以根据这些配置信息去生产Bean。
七、BeanFactory和ApplicationContext有什么区别 **
7.1、相同点
都可以作为容器。
7.2、区别
- FactoryBean用于生产Bean;
- ApplicationContext实现了FactoryBean,但是它不生产Bean,而是通过FactoryBean来进行生产,有点儿类似于汽车4S店和汽车工厂,4S店不生产汽车,真正生产汽车的是工厂,它的getBean()方法只是一个门面,做的事情更多,例如:
(1)会自动帮我们配置的Bean注册进来
(2)加载环境变量
(3)支持多语言
(4)实现事件监听
(5)注册很多对外扩展点
7.3、关系
ApplicationContext实现了FactoryBean。
八、说下Spring IOC容器的加载过程 *****
TODO