当前位置: 首页 > 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 版本开始支持该注解。

 

相关文章:

  • 流式渲染 Streaming SSR
  • 深入解析C++核心特性:运算符重载、继承、多态与抽象类
  • 第三节第二部分:Static修饰方法应用场景
  • 学习黑客搜索技巧
  • 解决应用程序在JAR包中运行时无法读取类路径下文件的问题
  • SSH(安全外壳协议)
  • 软件安全(二)优化shellcode
  • FreeRTOS如何实现100%的硬实时性?
  • 龙虎榜——20250509
  • 编译原理实验 之 语法分析程序自动生成工具Yacc实验
  • nvidia-smi 和 nvcc -V 作用分别是什么?
  • 算法设计与分析复习代码(hnust)
  • LVGL源码学习之渲染、更新过程(3)---绘制和刷写
  • 操作系统导论——第26章 并发:介绍
  • 68、微服务保姆教程(十一)微服务的监控与可观测性
  • 专题练习1
  • 赤色世界 陈默传 第一章 另一个陈默
  • 路由组件1
  • java volatile关键字
  • 二分系列题
  • 道指跌逾100点,特斯拉涨近5%
  • 中方是否认同俄方关于新纳粹主义观点?外交部:联大曾多次通过相关决议
  • 李公明︱一周书记:浪漫主义为什么……仍然重要?
  • 著名国际关系理论家、“软实力”概念提出者约瑟夫•奈逝世
  • 江淮、极氪、奇瑞,排着队造“劳斯莱斯”
  • 三大交易所多举措支持科创债再扩容,约160亿证券公司科创债有望近期落地