当前位置: 首页 > news >正文

@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.xdnf.cn/news/362161.html

相关文章:

  • 在 Envoy 的配置文件中出现的 “@type“ 字段
  • JVM之内存管理(一)
  • 【论文阅读】FreePCA
  • 让 Cursor 教我写 MCP Server
  • 一文掌握 LVGL 9 的源码目录结构
  • uniapp跨平台开发HarmonyOS NEXT应用初体验
  • 高级可视化图表分析实践——以《大侠立志传》武器系统为例
  • 经典计算核心问题在于多项式时间内无法求解
  • 「Mac畅玩AIGC与多模态27」开发篇23 - 多任务摘要合成与提醒工作流示例
  • Java中的包装类
  • 量化学习DAY2-开始批量提交alpha!
  • 架构师在技术公司中的角色与价值创造
  • Linux ifconfig命令详解
  • Git回顾
  • 服务器不备案有影响吗
  • 依赖关系-根据依赖关系求候选码
  • 智慧校园安全可视化指挥调度系统解决方案
  • 【源码+论文】基于Vue3的企业后台管理系统设计与实现
  • Excel提取单元格特定符号左右两边内容
  • 损失函数(平方损失MSE、绝对值损失MAE、负对数似然损失NLL、交叉熵损失CEL和二元交叉熵损失BCE)原理、公式调库实现与手动实现
  • ISP流程介绍(Raw格式阶段)
  • 模板引用、组件基础
  • 打破虚拟与现实边界,赵伟辰Holo HK项目引领全球用户体验设计革新
  • 跟我学C++中级篇——STL容器的查找对比
  • [AI Tools] Dify 工具插件上传指南:如何将插件发布到官方市场
  • 软件测试的概念
  • 使用Kotlin Flow实现Android应用的响应式编程
  • MTB图像配准算法实现
  • Swagger 3.0 中注解详细示例
  • Linux云计算训练营笔记day05(Rocky Linux中的命令:管道操作 |、wc、find、vim)