第十章 对象的生命周期

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)

大家都在看

  • 垃圾回收算法的原理及应用

    概述 有java开发经历的小伙伴必然对 垃圾回收不陌生。垃圾回收简单来说就是一种自动的内存管…

    数据库 2023年6月11日
    0105
  • Mysql异常——com.alibaba.druid.sql.parser.ParserException

    今天写业务逻辑时候,写完发现控制台出现报错,但是程序可以正常运行。在控制台报错中发现是因为SQL模糊查询格式问题 修改模糊查询 写法后 成功解决该报错 Original: http…

    数据库 2023年6月16日
    0190
  • [springmvc]ajax异步请求数据详细简单

    10.Ajax异步请求 Ajax即 Asynchronous Javascript And XML(异步JavaScript和XML在 2005年被Jesse James Garr…

    数据库 2023年6月16日
    085
  • MIT 6.824 Lab2C Raft之持久化

    书接上文Raft Part B | MIT 6.824 Lab2B Log Replication。 实验准备 实验代码: git://g.csail.mit.edu/6.824-…

    数据库 2023年6月14日
    073
  • mysql 事务 隔离性 锁

    1、四大特性 1.1 原子性(Atomicity) 事务是一个不可分割的最小工作单元。事务是一个不可分割的最小工作单元。 [En] A transaction is an indi…

    数据库 2023年5月24日
    078
  • git仓库push 和 pull只获取部分文件的方法

    gitee项目https://gitee.com/kehaoo/mytest目录结构如下其中part1.txt和part2.txt都是内容都是空的 在另一个文件夹将项目part1文…

    数据库 2023年6月11日
    0106
  • 异步线程里的日志不好追踪?小支一招,轻松搞定!

    众所周知,通过唯一的链路id来追踪一次请求的所有日志,对于排查生产问题来说,会是非常给力的。这个比较容易实现。我之前的博客也有多次提及 ▄︻┻┳═一 https://www.cnb…

    数据库 2023年6月9日
    092
  • [VSCode] Todo Tree VSCode插件 待办事项树

    Todo Tree 一款待办事项插件 我们写程序的时候,难免会遇到一些情况需要标记或者搁置,在写代码的时候会用一些特殊的注释来表示不同的内容,使我们可以快速的定位我们注释的位置。 …

    数据库 2023年6月9日
    088
  • mysql查询上个月日期_mysql 日期查询当天,当月,上个月,当年的数据sql语句函数的使用快速解决问题

    select * from 表名 where to_days(时间字段名) = to_days(now()); SELECT * FROM 表名 WHERE TO_DAYS( NO…

    数据库 2023年6月6日
    088
  • 迷宫回溯算法(递归练习)

    1:迷宫问题: 用一个7 x 8的矩形表示迷宫,其中 1表示障碍物,2表示走过的路,3表示走过的路(走不通为3),通过设计编写程序设置起点达到终点的的路线: 2:思路: 先画出迷宫…

    数据库 2023年6月6日
    0253
  • 内部类

    🐓内部类 可以将一个类定义在另一个类或方法中,这样的类称为内部类 将类定义在另一个类中成员的位置 public class Inner { // 定义在类内部 class Demo…

    数据库 2023年6月14日
    077
  • [编程一生]历史文章分类汇总

    2021年过去了,总结一下我的239篇原创。方便大家利用自带的搜索功能当智能机器人来用。 面试类 方法论 架构类 网络通信与 操作系统原理 稳定性建设 Java 中间件 程序人生 …

    数据库 2023年6月6日
    0101
  • Redis-内存淘汰策略

    策略分类 内存写满了怎么办?Redis提供了以下几种内存淘汰的策略: No eviction 不淘汰数据 即,内存写满后,再有写请求时,Redis直接返回错误,不会提供服务。这也是…

    数据库 2023年6月11日
    091
  • haproxy

    haproxy 一.haproxy简介 二.负载均衡 三.haproxy安装 1.yum安装 2.源码安装 2.1 配置文件解析 2.2时间格式 2.3 全局global 2.4 …

    数据库 2023年6月14日
    075
  • 分享攒了多年的mssql脚本

    分享攒了多年的mssql脚本 脚本类别包括:备份还原表分区常用函数错误日志定时自动抓取耗时SQL并归档发邮件脚本模块镜像批量脚本数据库收缩数据库损坏数据库账号统计数据库大小性能作业…

    数据库 2023年6月9日
    092
  • Spring Boot MongoDB

    Linux下启动MongoDB并使用mongosh连接 启动方式有两种: systemctl start mongod mongod 启动的时候有可能会报类似如下的错误: Exec…

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