spring学习-IOC-生命周期简介
Posted 懒佯佯大哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring学习-IOC-生命周期简介相关的知识,希望对你有一定的参考价值。
spring的创建,依赖ApplicationContext上下文
常用ApplicationContext-三个:
-
先看下应用上下文的简单类图:
-
ClassPathXmlApplicationContext 加载类路径下的xml配置文件(优先于FileSystemXmlApplicationContext使用)
-
AnnotationConfigApplicationContext 读取注解创建容器的
-
FileSystemXmlApplicationContext 加载磁盘路径下的配置文件
-
容器两个核心接口类:
- ApplicationContext:单例对象适用
- 构建核心容器时,创建对象采取的策略是,采用立即加载的方式
- BeanFactory:多例对象适用
- 构建核心容器时,创建对象采取的策略时,延迟加载的方式:即什么时候获取,什么时候才加载
- ApplicationContext:单例对象适用
-
Bean的作用范围:
- singleton
- prototype
- request:作用于web应用的请求范围
- session:作用于web应用的会话范围
- global-session:作用于集群环境会话范围(全局会话范围),当不是集群范围时,它就是session
关于session、request相关的,这里不做描述
bean的生命周期
生命周期 | 单例 | 多例 |
---|---|---|
创建 | IOC初始化即创建 | 使用时创建 |
运行 | IOC活着即可使用 | 创建后一直可用 |
销毁 | IOC关闭时 | 长时间不用时,由java的垃圾回收器搞定 |
- xml定义:
<!--bean的生命周期-->
<bean id="birdLife" class="ioc3.Fly" scope="singleton"
init-method="init" destroy-method="destroy”/>
- 代码:
public class Fly
public void say()
System.out.println("I can fly");
public void init()
System.out.println("Fly init...");
public void destroy()
System.out.println("Fly destroy...");
- Main测试:
System.out.println("========== bean的生命周期 ==========");
ClassPathXmlApplicationContext beanFactory1 = new ClassPathXmlApplicationContext("ioc3-scope.xml");
Fly flyLife = beanFactory1.getBean("birdLife", Fly.class);
flyLife.say();
beanFactory1.close();
- 输出:
========== bean的生命周期 ==========
Fly init...
I can fly
Fly destroy...
- 备注:
- 单例时,销毁需要手动调用close才可以观察到
- 多例时,不容易观察
参考自:IT黑马
以上是关于spring学习-IOC-生命周期简介的主要内容,如果未能解决你的问题,请参考以下文章
spring学习总结007 --- IOC容器级生命周期接口