spring学习笔记2——IOC

一、IOC概述

ioc:控制反转。控制:当前对象对内部成员的控制权。反转:这种控制权不由当前对象管理了,由其他(类,容器)来管理。

ioc的好处:

1、不用自己组装,拿来就用

2、享受单例好处,效率高,不占空间

3、统一配置,便与修改

二、IOC原理

ioc其实就是一个大工厂,用来管理所有对象和他们之间的依赖关系。

  • 通过反射来获取类的所有信息(成员变量,方法等)。
  • 通过xml或配置文件来描述类与类之间的关系。
  • 通过配置信息和反射技术来构建关系。

ioc对象创建和依赖:

spring学习笔记2——IOC

  1. 根据bean配置信息在容器内部创建bean定义注册表。
  2. 根据注册表加载bean、实例化bean、建立bean与bean之间的依赖关系。
  3. 将这些准备就绪的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之间的关系。