spring学习笔记2——IOC
一、IOC概述
ioc:控制反转。控制:当前对象对内部成员的控制权。反转:这种控制权不由当前对象管理了,由其他(类,容器)来管理。
ioc的好处:
1、不用自己组装,拿来就用
2、享受单例好处,效率高,不占空间
3、统一配置,便与修改
二、IOC原理
ioc其实就是一个大工厂,用来管理所有对象和他们之间的依赖关系。
- 通过反射来获取类的所有信息(成员变量,方法等)。
- 通过xml或配置文件来描述类与类之间的关系。
- 通过配置信息和反射技术来构建关系。
ioc对象创建和依赖:
- 根据bean配置信息在容器内部创建bean定义注册表。
- 根据注册表加载bean、实例化bean、建立bean与bean之间的依赖关系。
- 将这些准备就绪的bean放入bean缓冲池中,等待应用程序调用。
bean工厂的两种方式:BeanFactory、ApplicationContext
三、bean装配
1、bean装配方式
- xml配置
- 注解
- javaconfig
2、依赖注入方式
- 属性注入--通过setter()方法注入
- 构造函数注入
- 工厂方法注入
3、bean作用域
- Singleton:单例模式,即该bean对应的类只有一个实例;在spring 中是scope(作用范围)参数的默认值 。
- prototype:表示每次从容器中取出bean时,都会生成一个新实例;相当于new出来一个对象。
- request:基于web,表示每次接受一个HTTP请求时,都会生成一个新实例。
- session表示在每一个session中只有一个该对象。
使用@Primary注解设置为首选的注入Bean,使用@Qualifier注解设置特定名称的Bean来限定注入!
总结:
Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。
在自动配置的方式中,使用@Component去告诉Spring,我是一个bean,你要来管理我,然后使用@AutoWired注解去装配Bean(所谓装配,就是管理对象直接的协作关系)。然后在JavaConfig中,@Configuration其实就是告诉spring,spring容器要怎么配置(怎么去注册bean,怎么去处理bean之间的关系(装配))。那么久很好理解了,@Bean的意思就是,我要获取这个bean的时候,你spring要按照这种方式去帮我获取到这个bean。到了使用xml的方式,也是如此。<bean>标签就是告诉spring怎么获取这个bean,各种<ref>就是手动的配置bean之间的关系。