系列十六、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();
    }

}
相关推荐
嘟嘟w1 分钟前
JVM性能调优
java
wordbaby2 分钟前
React Native (Expo) iOS 真机调试失败排查:xcodebuild exited with error code 65
前端·react native
Godson_beginner3 分钟前
Sa-Token (java权限认证框架)
java·开发语言
头发那是一根不剩了4 分钟前
Spring Boot「多数据源并存」的设计思路,它与动态数据源又有什么区别?
java·spring boot·后端
谢景行^顾5 分钟前
numpy
开发语言·python·numpy
o***59278 分钟前
spring注入static属性
java·后端·spring
风象南12 分钟前
Spring Boot实现HTTPS双向认证
java·spring boot·后端
今天也很困15 分钟前
解决浏览器后台定时器降频问题:用 Worker 实现高精度 setInterval
前端
敲代码的瓦龙18 分钟前
操作系统相关的一些问题总结
linux·c语言·开发语言
只与明月听19 分钟前
一次uniapp问题排查
前端·javascript·vue.js