Spring
控制反转IOC
- 控制反转IOC: Inversion of Control
- 是一种解耦设计原则
- 主要目的是借助第三方,比如Spring IOC容器实现具有依赖关系的对象之间的解耦,从而降低代码之间的耦合度
- Spring IOC容器:
- Spring IOC容器负责创建对象并将对象连接在一起,配置这些对象.从创建中处理这些对象的整个生命周期,直到对象被完全销毁
- Spring IOC容器类似一个工厂
- 在创建对象时,只需要配置好配置文件或者是注解即可,不需要关注对象是如何创建的
- 控制反转示例:
- 对象a依赖于对象b, 当对象a需要使用对象b时必须由对象a创建对象b的实例
- 引入IOC容器后,当对象a需要使用对象b时,可以指定IOC容器去创建一个对象b注入到对象a中
- 引入IOC容器之后,对象a获取对象b的过程,由主动行为变为被动行为
- 实现了IOC原则的设计模式:
- 服务定位器模式ServiceLocator
- 工厂模式Factory
- 抽象工厂模式AbstractFactory
- 模板方法模式TemplateMethod
- 策略模式Strategy
- 依赖注入Depedency Inject
依赖注入DI
- 依赖注入DI: Dependency Inject
- 将实例变量传入到一个对象中去
- 是实现控制反转的一种设计模式
工厂设计模式Factory
- Spring框架中BeanFactory和ApplicationContext类使用工厂模式创建Bean对象
BeanFactory
- 延迟注入,即使用到某个Bean时才会进行注入
- 和ApplicationContext相比会占用更少的内存,程序启动速度更快
ApplicationContext
- 容器启动时就创建所有的Bean
- 和BeanFactory相比 ,BeanFactory仅提供了最基本的依赖注入支持 . ApplicationContext扩展了BeanFactory, 除了BeanFactory的功能外还包含其余更多的功能,通常使用ApplicationContext创建Bean
- ApplicationContext的三个实现类:
- ClassPathXmlApplication: 将上下文文件作为类路径资源
- FileSystemXmlApplication: 从文件系统中的XML文件中载入上下文定义信息
- XmlWebApplicationContext: 从Web系统中的XML文件中载入上下文定义信息
单例设计模式Singleton
- Spring中的Bean的作用域默认就是单例Singleton的 . Spring中的Bean还可以定义以下作用域: <