1. 什么叫 IOC
IOC 包括两方面: 一个叫依赖注入, 另一个叫控制反转
依赖注入: 是说你不用创建对象,而只需要描述它如何被创建, 简单讲就是帮助 new对象并且管理这些对象。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC 容器)负责把他们组装起来
控制反转: 就是说我将 new 对象的这个权利由原来对象本身转移到 Spring 身上. 举个例子: Service A 调用 Dao B 的时候, 如果不用 Spring 的话, 那肯定要有 Service A 去 new 一个 Dao B 对象出来, 再去调用. 但如果用了 Spring 后, 我们 new Dao B 这个过程就已经由Spring 处理好.
2. IOC 的优点是什么?
IOC 或依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和 JNDI 查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC 容器支持加载服务时的饿汉式初始化(容器启动时加载 bean)和懒加载(用到时加载 bean)。
3. 依赖注入的有几种方式
总共有四种: 常用的是构造器注入, setter 方式注入, 还有静态工厂注入, 动态工厂注
入. 用构造器参数实现强制依赖,setter 方法实现可选依赖.
4. 什么是 IOC 容器?
Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并
且管理这些对象的整个生命周期。
5. 饿汉式初始化 bean 和懒加载初始化 bean 有什么区别和怎样实现
这两者的区别就是一个是容器启动时加载所有的 bean, 一个是使用时才去加载, 默认是饿汉式初始化, 如果要启用懒加载只需要在配置 bean 的时候 配置 lazy-init=" true "