IOC(Inversion of Control)控制反转
资源的主动创建变成被动获取。由spring来负责控制对象的生命周期和对象间的关系。
IOC是一个容器,管理所有的Bean,本质上一个map。
DI(Dependency Injection)依赖注入
容器运行的时候通过反射,把容器中准备好的bean注入到需要的地方
Bean的作用域
- singleton: 单实例(默认是单实例作用域)
- 容器启动的时候创建对象,保存在容器中
- 在容器中只存在一个实例
- prototype: 多实例
- 容器启动的时候不会创建Bean,获取的时候才会创建Bean
- 每次获取的时候都会创建一个新的Bean
- request:在web环境下,同一次请求创建一个Bean(很少用)
- session:在web环境下,同一次回话创建一个Bean(很少用)
<bean id="user" class="com.frank.bean.User" scope="singleton"/>
<bean id="user" class="com.frank.bean.User" scope="prototype"/>
<bean id="user" class="com.frank.bean.User" scope="request"/>
<bean id="user" class="com.frank.bean.User" scope="session"/>
Bean的生命周期
- singleton: 单实例Bean,容器启动的时候创建,容器关闭的时候销毁
(容器启动时)构造器 ->初始化方法->(容器关闭)销毁方法 - prototype: 多实例Bean,每次获取的时候创建Bean
对于 prototype 作用域的 Bean,Spring 只负责创建,当容器创建了 Bean 的实例后,Bean 的实例就交给客户端代码管理,Spring 容器将不再跟踪其生命周期。
(容器启动时)构造器 ->初始化方法->容器关闭不会调用bean的销毁方法
生命周期方法
<bean id="user" class="com.frank.bean.User" destroy-method="" init-method=""/>
网友评论