spring学习-IOC-生命周期简介

Posted 懒佯佯大哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring学习-IOC-生命周期简介相关的知识,希望对你有一定的参考价值。

spring的创建,依赖ApplicationContext上下文

常用ApplicationContext-三个:

  • 先看下应用上下文的简单类图:

  • ClassPathXmlApplicationContext 加载类路径下的xml配置文件(优先于FileSystemXmlApplicationContext使用)

  • AnnotationConfigApplicationContext 读取注解创建容器的

  • FileSystemXmlApplicationContext 加载磁盘路径下的配置文件

  • 容器两个核心接口类:

    • ApplicationContext:单例对象适用
      • 构建核心容器时,创建对象采取的策略是,采用立即加载的方式
    • BeanFactory:多例对象适用
      • 构建核心容器时,创建对象采取的策略时,延迟加载的方式:即什么时候获取,什么时候才加载
  • 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容器级生命周期接口

Spring-IOC学习笔记-06bean的生命周期

Spring4学习回顾之路06- IOC容器中Bean的生命周期方法

Spring框架介绍及使用

Spring IOC容器生命周期阶段总结

[死磕 Spring 40/43] --- IOC 之 分析 bean 的生命周期 (重点)