spring中Bean创建完后打印语句的两种方法(Bean的生命周期)

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被创建后,打印语句将会在初始化阶段执行。

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
1、Spring的IoC(控制反转)是指将对象的创建、依赖注入和生命周期管理等工作交给Spring容器来完成,而不是由程序员手动创建和管理对象。这种模式可以提高应用程序的可维护性和灵活性。 2、Spring的DI(依赖注入)是指在IoC容器通过配置或注解的方式将对象之间的依赖关系注入进去。DI可以帮助程序员减少代码耦合度,提高代码的可读性和可维护性。 3、Springbean是指通过Spring容器管理的Java对象。Spring提供了多种装配方式,包括XML配置、注解配置和Java配置等。其,XML配置是最基本的一种方式,注解配置可以使代码更加简洁,而Java配置可以更加灵活地管理对象的依赖关系。 4、Bean的生命周期包括:实例化、属性赋值、调用初始化方法、使用Bean、调用销毁方法。在实例化阶段,Spring容器会根据配置信息创建Bean实例;在属性赋值阶段,Spring容器会根据配置信息为Bean属性赋值;在调用初始化方法阶段,Spring容器会调用Bean的初始化方法;在使用Bean阶段,程序员可以使用该Bean实例;在调用销毁方法阶段,Spring容器会调用Bean的销毁方法。 1、JPA是Java Persistence API的缩写,是Java EE 5规范一种ORM(对象关系映射)框架,可以将Java对象映射为数据库表。ORM是一种编程技术,通过映射Java对象和数据库表之间的关系,实现程序与数据库之间的数据交互。 2、Entity是JPA的一个概念,表示映射到数据库表的Java对象。Entity可以通过注解或XML文件来配置,可以定义表名、字段名、主键、关系等属性。 3、EntityManager是JPA的一个核心接口,用于管理Entity的生命周期、持久化、查询等操作。EntityManager通过JPA提供的API来与底层数据库交互,可以实现对象的持久化和查询等操作。 1、MyBatis是一种持久化框架,它将SQL语句Java代码分离,通过XML文件或注解来配置SQL语句,使得程序员可以更加方便地管理SQL语句和数据库交互操作。 2、MyBatis的工作流程包括:首先,SqlSessionFactoryBuilder会读取MyBatis配置文件,并创建SqlSessionFactory对象;然后,SqlSessionFactory对象会根据配置信息创建SqlSession对象;最后,程序员可以通过SqlSession对象来执行SQL语句并获取结果。 3、MyBatis实现Mapper接口的方式有两种:XML方式和注解方式。XML方式需要编写XML文件来配置SQL语句,比较灵活;注解方式可以直接在Java代码编写SQL语句,比较简洁。两种方式各有优缺点,程序员可以根据实际情况选择使用哪种方式。 4、SqlSessionFactory的生命周期通常是应用程序的整个生命周期,即在应用程序启动时创建SqlSessionFactory对象,在应用程序关闭时销毁SqlSessionFactory对象。 5、JPA ORM和Mybatis各有优缺点。JPA ORM可以更加方便地管理Entity和数据库交互,使用方便;而Mybatis可以更加灵活地管理SQL语句和数据库交互,可以写出更加复杂的SQL语句。 1、Spring MVC框架的工作原理是:首先,请求会被DispatcherServlet拦截,并交给HandlerMapping处理;HandlerMapping会根据请求的URL找到对应的Controller,并将请求转发给该Controller;Controller会根据请求的参数执行业务逻辑,并返回ModelAndView对象;最后,DispatcherServlet会将ModelAndView对象转换为响应结果并返回给客户端。 2、Spring MVC框架的常用注解包括:@Controller、@RequestMapping、@RequestParam、@PathVariable等。@Controller用于标识Controller类;@RequestMapping用于映射请求URL到Controller方法;@RequestParam用于获取请求参数;@PathVariable用于获取请求URL的变量。 3、Spring MVC有多种常用的设计模式,包括MVC模式、模板模式、适配器模式等。其,MVC模式是Spring MVC框架的核心设计模式,将应用程序分为Model、View和Controller三个部分,实现了业务逻辑、数据处理和页面渲染的分离。 4、与Spring MVC相比,SpringBoot做了许多增强和改进,包括自动配置、快速启动、内嵌服务器等。SpringBoot可以更加快速地创建和部署Web应用程序,简化了开发流程,提高了开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全 洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值