写在前面经过一段时间的整理, 希望读者看完后对自己的知识点有所帮助.
写过 java 的都知道: 所有的对象都必须创建; 或者说: 使用对象之前必须先创建. 而使用 ioc 之后, 你就可以不再手动创建对象, 而是从 ioc 容器中直接获取对象.
就好像我们无需考虑对象的销毁回收一样, 因为 java 垃圾回收机制帮助我们实现了这个过程; 而 ioc 则是让我们无需考虑对象的创建过程, 由 ioc 容器帮我们实现对象的创建, 注入等过程.
控制反转
spring ioc 容器
在 Spring 框架中的核心组件只有三个: Core,Context 和 Bean. 它们构建起了整个 Spring 的骨骼架构, 没有它们就不可能有 AOP,web 等特 ***.
如果说在三个核心中再选出一个核心, 那就非 Bean 莫属了. 可以说, Spring 就是面向 Bean 的编程, Bean 在 Spring 中才是真正的主角.
Spring 为何如此流行? 你会发现 Spring 解决了一个非常关键的问题, 它可以让你对对象之间的关系转而用配置文件来管理, 或者注解, 也就是它的依赖注入机制. 而这个注入关系在一个叫 Ioc 的容器中管理. Ioc 容器就是被 Bean 包裹的对象. Spring 正是通过把对象包装在 Bean 中从而达到管理这些对象及做一些列额外操作的目的.
核心组件协同工作
BeanFactory 与 ApplacationContext 的区别
IOC 中最核心的接口是 Beanfactory 提供 IOC 的高级服务, 而 ApplicationContext 是建立在 BeanFactory 基础之上提供抽象的面向应用的服务.
3 种注入方式
在 Spring 框架中, 依赖注入 (DI) 的设计模式是用来定义对象彼此间的依赖. 使用 xml 配置 bean 的情况下, 它主要有两种类型:
Setter 方法注入
构造器注入
当然, 有了注解之后, 使用注解的方式更加方便快捷. 即自动装配功能实现属性自动注入(@autowire).
写到这里, 让我想起了最近在牛客网上看的一道选择题了:
下面有关 spring 的依赖注入, 说法错误的是?
A, 依赖注入通常有如下两种: 设置注入和构造注入:
B, 构造注入可以在构造器中决定依赖关系的注入顺序, 优先依赖的优先注入 C, 当设值注入与构造注入同时存在时, 先执行构造注入, 再执行设值注入 D, 设值注入是指 IoC 容器使用属性的 setter 方法来注入被依赖的实例. 这种注入方式比较简单, 直观
来源: http://blog.51cto.com/13941961/2174992