Spring中Bean创建完后打印语句的两种方法

 更新时间:2023年07月05日 08:43:39   作者:全 洛  
这篇文章主要介绍了Spring中Bean创建完后打印语句的两种方法,一个是实现InitializingBean接口,另一个使用@Bean注解和initMethod属性,通过代码示例介绍的非常详细,感兴趣的小伙伴可以参考阅读

Bean的生命周期

Bean的生命周期包括四个阶段:

  • 实例化阶段(Instantiation):容器通过调用构造函数或者工厂方法来创建Bean的实例。

  • 属性赋值阶段(Populate properties):容器将相应的属性值设置给Bean的实例,可以通过setter方法、直接字段注入或者其他自定义的方式完成属性赋值。

  • 初始化阶段(Initialization):在Bean的属性赋值完成后,容器会调用相关的初始化方法(如果有的话),如实现了InitializingBean接口的afterPropertiesSet()方法,或者通过@Bean注解的initMethod属性指定的方法。开发者可以在初始化方法中进行一些额外的操作,例如数据校验、初始化资源等。

  • 使用阶段(In use):

  • 经过初始化阶段后,Bean进入可用状态,可以被容器及其他对象使用。

  • 销毁阶段(Destruction):当Bean不再被使用时,容器可以对其进行销毁操作。这包括调用实现了DisposableBean接口的destroy()方法,或者通过@Bean注解的destroyMethod属性指定的方法。开发者可以在销毁方法中释放资源、关闭连接等。

两种方式在Bean创建完后打印语句(Bean的初始化阶段)

实现InitializingBean接口:

  • 创建一个类,实现InitializingBean接口。

  • 在该类中实现afterPropertiesSet()方法,在该方法中编写创建Bean后要执行的操作,例如打印语句。

  • 当Bean被创建后,容器会自动调用afterPropertiesSet()方法。

    代码示例:

import org.springframework.beans.factory.InitializingBean;
public class MyBean implements InitializingBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("Bean已创建。");
    }
}

使用@Bean注解和initMethod属性:

  • 在Bean对应的配置类中,使用@Bean注解定义Bean的创建方法。

  • 在@Bean注解中,使用initMethod属性指定在Bean创建后要调用的初始化方法。

  • 在初始化方法中,编写需要执行的操作,例如打印语句。

    代码示例:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
    @Bean(initMethod = "init")
    public MyBean myBean() {
        return new MyBean();
    }
}
public class MyBean {
    public void init() {
        System.out.println("Bean已创建。");
    }
}

最后

无论使用哪种方式,当Bean被创建后,打印语句将会在初始化阶段执行。

具体使用哪种方式都可以,当然根据具体的场景选择适合的方式最好。

到此这篇关于Spring中Bean创建完后打印语句的两种方法的文章就介绍到这了,更多相关Spring Bean打印语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot学习入门之AOP处理请求详解

    Spring Boot学习入门之AOP处理请求详解

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,下面这篇文章主要给大家介绍了关于Spring Boot学习入门之AOP处理请求的相关资料,需要的朋友可以参考下。
    2017-09-09
  • SpringBoot3集成Thymeleaf的过程详解

    SpringBoot3集成Thymeleaf的过程详解

    在现代的Web开发中,构建灵活、动态的用户界面是至关重要的,Spring Boot和Thymeleaf的结合为开发者提供了一种简单而强大的方式来创建动态的Web应用,本文将介绍如何在Spring Boot项目中集成Thymeleaf,并展示一些基本的使用方法,需要的朋友可以参考下
    2024-01-01
  • SpringBoot如何优雅的处理全局异常

    SpringBoot如何优雅的处理全局异常

    这篇文章主要给大家介绍了关于SpringBoot如何优雅的处理全局异常的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SpringBoot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 使用Spring Boot+MyBatis框架做查询操作的示例代码

    使用Spring Boot+MyBatis框架做查询操作的示例代码

    这篇文章主要介绍了使用Spring Boot+MyBatis框架做查询操作的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Mybatis基于注解与XML开发使用流程

    Mybatis基于注解与XML开发使用流程

    MyBatis是Java的持久化框架,目的是为了使操作数据库更加方便、灵活、高效,可以通过Java注解和XML文件来映射Java对象和SQL语句,提供了非常灵活的SQL编写方式和动态SQL语句的创建方式,这篇文章主要介绍了Mybatis基于注解与XML开发,需要的朋友可以参考下
    2023-07-07
  • 解决window.location.href之后session丢失的问题

    解决window.location.href之后session丢失的问题

    今天小编就为大家分享一篇关于解决window.location.href之后session丢失的问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Spring boot集成spring session实现session共享的方法

    Spring boot集成spring session实现session共享的方法

    这篇文章主要介绍了Spring boot集成spring session实现session共享的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • springboot Minio功能实现代码

    springboot Minio功能实现代码

    这篇文章主要介绍了springboot Minio功能实现,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • springcloud中Feign超时提示Read timed out executing POST的问题及解决方法

    springcloud中Feign超时提示Read timed out executing

    Feign接口调用分两层,Ribbon的调用和Hystrix调用,理论上设置Ribbon的时间即可,但是Ribbon的超时时间和Hystrix的超时时间需要结合起来,这篇文章给大家介绍springcloud之Feign超时提示Read timed out executing POST问题及解决方法,感兴趣的朋友一起看看吧
    2024-01-01
  • JDK9的新特性之String压缩和字符编码的实现方法

    JDK9的新特性之String压缩和字符编码的实现方法

    这篇文章主要介绍了JDK9的新特性之String压缩和字符编码的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论