在spring的容器里,最小单元是bean。spring的容器的作用就是管理这些bean。而spring采取的管理这些bean的策略就是IOC(Inversion of Control),又称DI(依赖注入)。这些待管理的bean会以某种形式(java或者xml)定义自己的依赖关系,而容器在创建管理这些bean的时候进行依赖的注入。做依赖注入时容器其实就把实例化被依赖bean交给了依赖bean,故称为控制的反转。说了这些,大家可能还有点疑惑,这里的bean到底是什么呀?那我们就需要看下spring是怎么定义自己的了。
The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.
这句话就在spring.io关于spring framework的介绍文档第一句。简单来说,就是spring致力于提供一个通用的编程模型给基于java的企业级应用。不管这个企业是什么类型业务的企业。spring需要自己去适应不同的业务场景。而且它还真做到了。这都归功于上面的bean。小小的bean是spring对于业务的最佳抽象。它的适应性支撑着spring的项目越来越多。
在spring framework里,
org.springframework.beans 与 org.springframework.context
这两个包就是IOC容器的基础。其中,最基础的接口是BeanFactory。而扩展时使用最多的是ApplicationContext。它们的简单依赖类图如下。
经验老道的程序员一般都会建议你,如果你想创建一个有自己特色的bean容器,一定要使用ApplicationContext,而不是BeanFactory。