@PostConstruct @PreDestroy

@PostConstruct 是 Java EE(现 Jakarta EE)中的一个注解,用于标记一个方法在对象初始化完成后立即执行。它在 Spring 框架、Java Web 应用等场景中广泛使用,主要用于资源初始化、依赖注入完成后的配置等操作。

1. 基本作用

  • 执行时机

    • 在对象实例化(通过构造器创建)并完成依赖注入(如 @Autowired 注入 Bean)后,且在该 Bean 投入使用前执行。
    • 仅执行一次,确保资源初始化逻辑只运行一次。
  • 典型场景

    • 初始化资源(如数据库连接、网络客户端)。
    • 加载配置文件或缓存数据。
    • 验证依赖注入的正确性。

2. 使用条件

  1. 方法要求

    • 返回类型:必须为 void
    • 参数:不能有参数。
    • 访问修饰符:通常为 publicprotected 或默认(package-private),但不能是 private(某些容器可能允许,但不推荐)。
    • 静态方法:不允许(因静态方法属于类,而非实例)。
    • 抛出异常:可以抛出受检异常(如 IOException)。
  2. 依赖环境

    • 需要 JSR-250 规范支持(Java EE 5+ 或 Jakarta EE)。
    • Spring 框架从 2.5 版本开始支持该注解。

@PreDestroy 是 Java EE(现 Jakarta EE)中的一个注解,用于标记一个方法在对象被销毁前执行。它与 @PostConstruct 相对应,主要用于资源释放、清理操作,确保对象在生命周期结束时正确释放占用的资源(如关闭数据库连接、停止线程、释放文件句柄等)。

 @PreDestroy

1. 基本作用

  • 执行时机

    • 在对象被容器销毁前(如 Spring 容器关闭、Servlet 实例销毁)执行。
    • 仅执行一次,确保资源释放逻辑只运行一次。
  • 典型场景

    • 关闭数据库连接或网络客户端。
    • 停止后台线程或定时器。
    • 释放文件锁或临时资源。

2. 使用条件

  1. 方法要求

    • 返回类型:必须为 void
    • 参数:不能有参数。
    • 访问修饰符:通常为 publicprotected 或默认(package-private),但不能是 private(某些容器可能允许,但不推荐)。
    • 静态方法:不允许(因静态方法属于类,而非实例)。
    • 抛出异常:可以抛出受检异常,但建议捕获并记录,避免影响容器销毁流程。
  2. 依赖环境

    • 需要 JSR-250 规范支持(Java EE 5+ 或 Jakarta EE)。
    • Spring 框架从 2.5 版本开始支持该注解。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS微课1000例】0146:将多个文件夹下的影像移动到一个目标文件夹(以Landscan数据为例)

本文讲述将多个文件夹下的影像移动到一个目标文件夹,便于投影变换、裁剪等操作。 文章目录 一、数据准备二、解压操作三、批量移动四、查看效果五、ArcGIS操作一、数据准备 全球人口数据集Landscan2000-2023如下所示,每年数据位一个压缩包: 二、解压操作 首先将其解压,方…

专业级 GIF 制作工具深度解析:Gifski 与 GIPHY CAPTURE 的技术对比与实战指南

《Gifski 与 GIPHY CAPTURE:GIF 制作工具的深度对比与实战应用》 最近在尝试做一些培训文档,需要使用GIF图做动态效果,把工具选型过程给大家做一下分享。 先看一张对比表,具体如下: 场景 Windows macOS Linux 移…

selenium替代----playwright

安装 好处特点:这个东西不像selenium需要固定版本的驱动 pip config set global.index-url https://mirrors.aliyun.com/pypi/simplepip install --upgrade pippip install playwright playwright installplaywright install ffmpeg (处理音视频的)验证&#x…

Python代码编程基础

字符串 str.[]实现根据下标定位实现对元素的截取 for 循环可以实现遍历 while 循环可以在实现遍历的同时实现对某一下标数值的修改 字符串前加 r 可以实现对字符串的完整内容输出 字符串前加 f 可以实现对字符串内{}中包裹内容的格式化输出,仅在 v3.6 之后可用…

5月9号.

v-for: v-bind: v-if&v-show: v-model: v-on: Ajax: Axios: async&await: Vue生命周期: Maven: Maven坐标:

Spring 必会之微服务篇(1)

目录 引入 单体架构 集群和分布式架构 微服务架构 挑战 Spring Cloud 介绍 实现方案 Spring Cloud Alibaba 引入 单体架构 当我们刚开始学开发的时候,基本都是单体架构,就是把一个项目的所有业务的实现功能都打包在一个 war 包或者 Jar 包中。…

计算机的基本组成

#灵感# 记录下基础知识,此处专指计算机硬件方面,捎带记下芯片知识。 综述: 计算机硬件的基本组成包括运算器、控制器、存储器、输入设备和输出设备五大部分。其中,集成在一起的运算器和控制器称为 CPU(处理器&#x…

【Python 列表(List)】

Python 中的列表(List)是最常用、最灵活的有序数据集合,支持动态增删改查操作。以下是列表的核心知识点: 一、基础特性 有序性:元素按插入顺序存储可变性:支持增删改操作允许重复:可存储重复元…

Qt 的原理及使用(1)——qt的背景及安装

1. Qt 背景介绍 1.1 什么是 Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形 界⾯所需的所有功能。它是完全⾯向对象的,很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模 式,开发者可以通过简单的拖拽…

多分类问题softmax传递函数+交叉熵损失

在多分类问题中,Softmax 函数通常与交叉熵损失函数结合使用。 Softmax 函数 Softmax 函数是一种常用的激活函数,主要用于多分类问题中。它将一个实数向量转换为概率分布,使得每个元素的值在 0 到 1 之间,且所有元素的和为 1。 …

数智读书笔记系列032《统一星型模型--一种敏捷灵活的数据仓库和分析设计方法》

引言 在当今数字化时代,数据仓库作为企业数据管理的核心基础设施,承担着整合、存储和提供企业数据的关键角色。随着商业环境的快速变化和业务需求的日益复杂,数据仓库的设计方法也在不断演进,以适应新的挑战和要求。 背景与意义 数据仓库领域长期存在着两种主流方法论之…

RT-Thread 深入系列 Part 1:RT-Thread 全景总览

摘要: 本文将从 RTOS 演进、RT-Thread 的版本分支、内核架构、核心特性、社区与生态、以及典型产品应用等多维度,全面呈现 RT-Thread 的全景图。 关键词:RT-Thread、RTOS、微内核、组件化、软件包管理、SMP 1. RTOS 演进与 RT-Thread 定位 2…

[docker基础一]docker简介

目录 一 消除恐惧 1) 什么是虚拟化,容器化 2)案例 3)为什么需要虚拟化,容器化 二 虚拟化实现方式 1)应用程序执行环境分层 2)虚拟化常见类别 3)常见虚拟化实现 一)主机虚拟化(虚拟机)实现 二)容器虚拟化实现 一 消除恐…

PostgreSQL 的 pg_advisory_lock 函数

PostgreSQL 的 pg_advisory_lock 函数 pg_advisory_lock 是 PostgreSQL 提供的一种应用级锁机制,它不锁定具体的数据库对象(如表或行),而是通过数字键值来协调应用间的并发控制。 锁的基本概念 PostgreSQL 提供两种咨询锁(advi…

SGLang 实战介绍 (张量并行 / Qwen3 30B MoE 架构部署)

一、技术背景 随着大语言模型(LLM)的飞速发展,如何更高效、更灵活地驾驭这些强大的模型生成我们期望的内容,成为了开发者们面临的重要课题。传统的通过拼接字符串、管理复杂的状态和调用 API 的方式,在处理复杂任务时…

微服务中 本地启动 springboot 无法找到nacos配置 启动报错

1. 此处的环境变量需要匹配nacos中yml配置文件名的后缀 对于粗心的小伙伴在切换【测试】【开发】环境的nacos使用时会因为这里导致项目总是无法启动成功

Lua从字符串动态构建函数

在 Lua 中,你可以通过 load 或 loadstring(Lua 5.1)函数从字符串动态构建函数。以下是一个示例: 示例 1:基本动态函数构建 -- 动态构建一个函数 local funcStr "return function(a, b) return a b end"-…

【Python】‌Python单元测试框架unittest总结

1. 本期主题:Python单元测试框架unittest详解 unittest是Python内置的单元测试框架,遵循Java JUnit的"测试驱动开发"(TDD)理念,通过继承TestCase类实现测试用例的模块化组织。本文聚焦于独立测试脚本的编写…

【Python 实战】---- 使用Python批量将 .ncm 格式的音频文件转换为 .mp3 格式

1. 前言 .ncm 格式是网易云音乐专属的加密音频格式,用于保护版权。这种格式无法直接播放,需要解密后才能转换为常见的音频格式。本文将介绍如何使用 Python 批量将 .ncm 格式的音频文件转换为 .mp3 格式。 2. 安装 ncmdump ncmdump 是一个专门用于解密 .ncm 文件的工具。它…

Linux 学习笔记2

Linux 学习笔记2 一、定时任务调度操作流程注意事项 二、磁盘分区与管理添加新硬盘流程磁盘管理命令 三、进程管理进程操作命令服务管理(Ubuntu) 四、注意事项 一、定时任务调度 操作流程 创建脚本 vim /path/to/script.sh # 编写脚本内容设置可执行权…