反射,控制反转,依赖倒置原则。
反射:自由度高,比较灵活,但是可能会引起性能问题,而且反射可以动态访问私有变量,私有方法,可能会引起安全性的问题。
IOC最重要的就是BeanFactory 和 ApplicationContext
BeanFactory:
BeanFactory是SpringIOC容器的鼻祖是IOC容器的基础接口,所有的容器都是从它这里继承实现而来。BeanFactory体系结构是典型的工厂方法模式,即什么样的工厂生产什么样的产品。BeanFactory是最基本的抽象工厂,而其他的IOC容器只不过是具体的工厂,对应着各自的Bean定义方法。但同时,其他容器也针对具体场景不同,进行了扩充,提供具体的服务。
1.BeanFactory是Spring容器的Root Interface
2.BeanFactory的作用是持有一定数量的BeanDefinition,每一个都有一个独有的String名字。BeanFactory可以返回单例或多例的对象,取决于Bean定义文件。
3. 通过setters,constructors进行依赖注入更好,其实这也是常用的方法
4. BeanFactory通过载入配置源文件(XML文件)的方式,来配置Bean。
5. 最后一大段是BeanFactory支持的bean生命周期的顺序。但是其实BeanFactory是没有给出抽象方法
方法:getBean方法
containsBean()
isSingleton
isPrototype()
isTypeMath()
getType()
ApplicationContext:
ApplicationContext是一个高级形态意义的Ioc容器,它在BeanFactory的基础上添加的附加功能,这些功能为ApplicationContext提供了BeanFactory不具备的新特性:
①支持不同的信息源。看源代码 它扩展了MessageSource接口,这些信息源的扩展功能可以支持国际化的实现,为开发多语言版本的应用提供服务
②访问资源
③支持应用实践。实现了接口ApplicationEventPublisher,从而在上下文中引入了事件机制。这些事件和Bean的声明周期的结合为Bean的管理提供了便利。