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

发布于:2024-11-02 ⋅ 阅读:(13) ⋅ 点赞:(0)

@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. 源码

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

5. Demo

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    // 构造器
    public UserService() {
        System.out.println("UserService: 构造方法被调用");
    }

    // 初始化方法,使用@PostConstruct注解
    @PostConstruct
    public void init() {
        System.out.println("UserService: 初始化方法被调用");
        // 可以在这里进行资源的初始化,例如打开数据库连接等
    }

    // 销毁方法,使用@PreDestroy注解
    @PreDestroy
    public void destroy() {
        System.out.println("UserService: 销毁方法被调用");
        // 可以在这里进行资源的释放,例如关闭数据库连接等
    }

    // 示例业务方法
    public void doSomething() {
        System.out.println("UserService: 执行某些业务逻辑");
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到