Spring学习笔记_19——@PostConstruct @PreDestroy

embedded/2024/12/26 23:44:35/

@PostConstruct && @PreDestroy

1. 介绍

@PostConstruct注解与@PreDestroy注解都是JSR250规范中提供的注解。

@PostConstruct注解标注的方法可以在创建Bean后在为属性赋值后,初始化Bean之前执行。

@PreDestroy注解标注的方法可以在Bean销毁之前执行。

2. 依赖

如果使用@PostConstruct注解与@PreDestroy注解,则需要在Maven的pom.xml文件中添加如下依赖。

<dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version>
</dependency>

3. 场景

使用Spring开发项目的过程中,如果在Bean对象创建完成后,需要对Bean对象中的成员进行一些初始化操作,就可以使用@PostConstruct注解注解实现。

如果在Bean对象销毁之前,对系统中的一些资源进行清理,例如释放占用的资源,释放数据库连接等,就可以使用@PreDestroy注解实现。

4. 源码

java">@Documented
@Retention (RUNTIME)
@Target(METHOD)
public @interface PostConstruct {
}
java">@Documented
@Retention (RUNTIME)
@Target(METHOD)
public @interface PreDestroy {
}

5. Demo

java">import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.stereotype.Service;@Service
public class UserService {// 构造器public UserService() {System.out.println("UserService: 构造方法被调用");}// 初始化方法,使用@PostConstruct注解@PostConstructpublic void init() {System.out.println("UserService: 初始化方法被调用");// 可以在这里进行资源的初始化,例如打开数据库连接等}// 销毁方法,使用@PreDestroy注解@PreDestroypublic void destroy() {System.out.println("UserService: 销毁方法被调用");// 可以在这里进行资源的释放,例如关闭数据库连接等}// 示例业务方法public void doSomething() {System.out.println("UserService: 执行某些业务逻辑");}
}

http://www.ppmy.cn/embedded/134298.html

相关文章

【Coroutines】Full Understanding of Kotlinx.Corutines Framework

文章目录 What is CorutinesDifference between Corutine and ThreadFast UsageSuspend FunctionAdvanced Usage of CoroutineCoroutine EssentialsCoroutineContextCoroutineScopePredefined CoroutineScopePredefined DispatchersPredefined CoroutineStartJobCreate a Corou…

​【Java基础面试题2】

目录 前言 1.11 int和Integer有什么区别&#xff0c;二者在做运算时会得到什么结果&#xff1f; 1.12 说一说你对面向对象的理解 1.13 面向对象的三大特征是什么&#xff1f; 1.14 封装的目的是什么&#xff0c;为什么要有封装&#xff1f; 1.15 说一说你对多态的理解 1…

Spring Boot 开发常见问题及解决方案汇总

Spring Boot 是目前 Java 开发中最受欢迎的框架之一&#xff0c;它简化了 Spring 框架的配置和部署流程。然而&#xff0c;开发者在使用 Spring Boot 过程中&#xff0c;也会遇到一些常见问题。本文将分析这些问题的排行&#xff0c;并提供相应的解决方案&#xff0c;帮助开发者…

15 Docker容器存储架构:docker存储驱动简介

文章目录 一、Docker 存储驱动探索1.1 存储驱动1.2 存储驱动方式1.3 非持久化存储1.4 持久化存储一、Docker 存储驱动探索 1.1 存储驱动 Storage driver处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户提供了多层数据合并后的统一视图。 [superman@docker ~]$…

QT国际化,语言翻译

文章目录 1.lupdate更新翻译2.生成*.ts文件3.翻译4.lrelease发布翻译5.在程序中使用翻译文件6.运行 1.lupdate更新翻译 lupdate就是用于扫描pro文件中指定的代码或UI文件中被tr包装起来的文本。 lupdate的使用 lupdate的使用可以使用lupdate --help来查看。 粗略的说一下这个…

手机实时提取SIM卡打电话的信令声音-新的篇章(三、Android虚拟声卡探索)

手机实时提取SIM卡打电话的信令声音-新的篇章(三、Android虚拟声卡探索) 前言 前面的篇章中&#xff0c;我们从理论方向和实际市面上出现的音频线传输声音的方式&#xff0c;讨论绕开手机对SIM卡电话通话声音的封锁场景的可行性&#xff0c;并实际选购几款数字和模拟的USB转接…

Linux的第二次作业

作业1 1.建组 [rootbogon 桌面]# groupadd -g 2000 shengcan [rootbogon 桌面]# groupadd -g 2001 caiwu [rootbogon 桌面]# groupadd -g 2002 jishu 2.建立用户并赋予相应权限 [rootlocalhost 桌面]# useradd -u 2000 -g shengcan -G …

08 go语言(golang) - 数据类型:数组、切片

数据类型 Go语言提供了一组丰富的数据类型&#xff0c;涵盖了基本的数值类型、复合类型和特殊类型。 基本数据类型 布尔型&#xff1a; bool&#xff1a;表示真或假&#xff08;true 或 false&#xff09;。 数值型&#xff1a; 整型&#xff1a;包括有符号和无符号整数。 有…