系列十六、bean有哪些生命周期的回调方法?有哪几种实现方式?

一、概述

bean的生命周期的回调方法主要分两种,一种是初始化时进行调用,另外一种是销毁时进行调用。但是不管是初始化还是销毁,都对应着三种方式。

二、实现方式

2.1、注解方式

java 复制代码
@PostConstruct + @PreDestroy
java 复制代码
@Component
public class UserService {

    public UserService() {
        System.out.println("UserService的构造方法执行了...");
    }

    @PostConstruct
    public void init() {
        System.out.println("UserService 初始化...");
    }

    @PreDestroy
    public void destroy () {
        System.out.println("UserService 销毁...");
    }

}

2.2、实现接口方式

java 复制代码
@Component
public class UserService2 implements InitializingBean, DisposableBean {

    public UserService2() {
        System.out.println("UserService2的构造方法执行了...");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("UserService2 初始化...");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("UserService2 销毁...");
    }
}

2.3、通过指定initMethod和destoryMethod方式

java 复制代码
public class UserService3 {

    public UserService3() {
        System.out.println("UserService3的构造方法执行了...");
    }

    public void init() {
        System.out.println("UserService3 初始化...");
    }

    public void destroy() {
        System.out.println("UserService3 销毁...");
    }

}
java 复制代码
@Configuration
@ComponentScan(basePackages = "org.star")
public class MySpringConfig {

    @Bean(initMethod = "init",destroyMethod = "destroy")
    public UserService3 userService3() {
        return new UserService3();
    }

}
相关推荐
彷徨而立2 分钟前
【C++】 using声明 与 using指示
开发语言·c++
A尘埃2 分钟前
Redis在地理空间数据+实时数据分析中的具体应用场景
java·redis
前端小张同学8 分钟前
前端行情好起来了,但是我依然没拿到offer
前端
csxin8 分钟前
Spring Boot 中如何设置 serializer 的 TimeZone
java·后端
程序员小续10 分钟前
React 官方严令禁止:Hook 不能写在 if/else,真相竟然是…
前端·javascript·程序员
懒得不想起名字10 分钟前
flutter_riverpod: ^2.6.1 应用笔记
前端
CrabXin11 分钟前
让网页在 PC 缩放时“纹丝不动”的 4 个技巧
前端·react.js
@半良人18 分钟前
Deepseek+python自动生成禅道测试用例
开发语言·python·测试用例
Juchecar21 分钟前
Naive UI 学习指南 - Vue3 初学者完全教程
前端·vue.js
用户81686947472522 分钟前
从0到1教你开发一个Mini-ESLint
前端·开源