第十章 对象的生命周期

1.什么是生命周期

对象创建 存活 销毁的完整的过程

2.为什么学习对象的生命周期

在以前通过new创建对象,调用对象,则该对象存活,直到被JVM的垃圾回收机制回收
现在由Spring负责对象的创建 存活 销毁,了解生命周期,有助于使用好Spring为我们创建的对象

3.生命周期的三个阶段

  • 创建阶段
  • scope=”singleton”
Spring创建工厂的同时,创建对象
注意 : 设置scope="singleton"的同时,想要在获取对象的同时,创建对象
      在bean标签中添加属性
  • scope=”prototype”
Spring工厂在获取对象的同时,创建对象
  • 初始化阶段
Spring工厂在创建完对象后,调用对象的初始化方法,完成初始化操作
1. 初始化方法提供:程序员根据需求,提供初始化方法,完成初始化操作
2. 初始化方法调用:Spring工厂进行调用
  • 实现InitializingBean接口
//将初始化需求写在方法里面,完成初始化操作
public void afterPropertiesSet(){}
  • 在对象中提供一个普通的初始化方法
//名字随便起
public void myInit(){}
//配置文件中进行配置

  • 细节分析
    1. 如果一个对象既实现了InitializingBean接口, 又提供了普通的初始化方法时,怎么调用?谁先调用?
都会起作用
先调用接口方法
再调用普通的初始化方法
2. 如果对象中存在成员变量, 需要进行注入, 先注入还是先初始化?
注入一定会发生在初始化之前
3. 什么是初始化
资源的初始化 : 数据库 IO 网络...

  • 销毁阶段
Spring销毁对象之前,会调用对象的销毁方法,完成销毁操作

1. Spring什么时候销毁所创建的对象
    context.close();
2. 销毁方法 : 程序员根据需求,定义销毁方法,完成销毁操作
      调用 : Spring工厂完成调用
  • 实现DisposableBean接口
//将销毁需求写在该方法中,完成销毁操作
public void destroy(){}
  • 在对象中提供一个普通的销毁方法
//在对象中定义方法,命名无要求
public void myDestroy(){}
//配置文件中进行配置

  • 细节分析
    1. 销毁操作只适用于scope=”singleton”时
    2. 什么是销毁
主要是资源的释放
  • 总结

第十章 对象的生命周期

Original: https://www.cnblogs.com/suwuji/p/16498593.html
Author: 苏无及
Title: 第十章 对象的生命周期

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612606/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • ShardingSphere 异构迁移最佳实践:将3.5亿量级的顾客系统 RTO 减少60倍

    Apache ShardingSphere 助力当当 3.5 亿用户量级顾客系统重构,由 PHP+SQL Server 技术栈无缝转型为 Java+ShardingSphere+M…

    数据库 2023年6月16日
    0103
  • python tkiner实现自动打包程序

    环境 python3.x 使用前请确保安装pyinstaller库 本程序还未完善,可以自行完善 若要使用加密,请自行安装cryptodome库 python;gutter:tru…

    数据库 2023年6月11日
    083
  • leetcode 437. Path Sum III 路径总和 III(中等)

    一、题目大意 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也…

    数据库 2023年6月16日
    086
  • java死锁(Java-level deadlock)

    java-level deadlock 如下代码可以模拟java死锁。注意:当出现死锁时,应用程序是无响应的。错误信息: Found one Java-level deadlock…

    数据库 2023年6月9日
    078
  • MYSQL–>SQL语法

    注:DDL(Data definition Language)数据库定义(比如说表,数据库)DML(Data Mainpulation Language)数据库 表的增删改查DQL…

    数据库 2023年5月24日
    0100
  • phpstrom以及webstrom等jetbrains全家桶激活方法

    因为最近重新安装了phpstrom,所以在网上找了许多激活方式,各种激活码和加公众号都试过了,没有一个能用的,直到我找到了以下的方式,亲测可用: 原理是我们通过代码搜索其他授权服务…

    数据库 2023年6月14日
    0136
  • 设计模式之(10)——桥接模式

    Hello,大家好,我们的设计模式系列中断了几天,今天我们继续,那么我们下面继续来说一种结构型设计模式,那就是大名鼎鼎的”桥接模式”。 定义:桥接模式的官方…

    数据库 2023年6月14日
    085
  • go interface{}使用

    先上代码 为什么会报错? 因为空接口拥有两个指针,内存布局上会占用两个机器字长。 对于长度为n的空接口切片而言,它的每个元素都是以2机器字长为单位的连续空间,因此总共会占用 2n个…

    数据库 2023年6月9日
    068
  • Redis缓存相关的几个问题

    1 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来…

    数据库 2023年6月14日
    071
  • 10、RestTemplate方式实现远程调用Client

    一、JSONObject类详解: JSONobject是FastJson提供的对象,在API中是用一个私有的常量map进行封装的,实际就是一个map,只不过 FastJson对其进…

    数据库 2023年6月6日
    080
  • mybatis-延迟加载

    本文主要介绍下mybatis的延迟加载,从原理上介绍下怎么使用、有什么好处能规避什么问题。延迟加载一般用于级联查询(级联查询可以将主表不能直接查询的数据使用自定义映射规则调用字表来…

    数据库 2023年6月16日
    060
  • Mybatis完整版详解

    一、简介 1.什么是MyBatis MyBatis 是一款优秀的持久层框架 它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参…

    数据库 2023年6月16日
    082
  • 一文读懂Redis

    Redis与NoSQL概述 Nosql的优势 使用nosql解决cpu与内存压力 使用nosql解决I/O压力 Nosql数据库的概述 NoSql= Not Only SQL 采用…

    数据库 2023年6月6日
    095
  • 牛客SQL刷题第三趴——SQL必知必会

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots …

    数据库 2023年6月16日
    087
  • mybatis批量操作

    List类型 Mapper.java public int updateAccount(List<orderjob> orderJobs);</orderjob&…

    数据库 2023年6月16日
    076
  • 猿创征文|小而巧的API文档生成工具之smart-doc

    文章目录 smart-doc介绍 smart-doc特性 smart-doc的最佳搭档 谁在使用smart-doc smart-doc的优缺点 smart-doc和swagger区…

    数据库 2023年6月6日
    0260
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球