Bean生命周期的五个阶段

发布时间:2025-06-24 20:55:55  作者:北方职教升学中心  阅读量:666


我们可以发现。package private 或 private;

这种方法不能是 static;这种方法可以是 final;

该方法只执行一次。

  • 初始化:Bean对象创建后,需要初始化,包括设置属性值、必须先调用此方法。 。空调等([各种]初始化);
    4. ⼊住(使⽤ Bean);
    5. 出售(Bean 销毁)。

    Bean生命周期的五个阶段。

    package com.example.bean.test;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { // 获得上下文对象󿀌并启动 Spring Boot 项目 ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args); // 获取 Bean BeanLifeComponent component = context.getBean(BeanLifeComponent.class); // 使用 Bean component.use(); // 停止 Spring Boot 项目 context.close(); }}。 所以我们创建了另一个类来实现这两种方法。为了避免空指针异常,在使用过程中,Bean可能会调用其他对象的方法,因此,,应销毁和释放占用的内存空间。我们使用ConfigurableApplicationContextexte 获取上下文对象。

     在这里获得上下文对象  因为我们使用springboot演示 因此,#xff08;实例化,从⽆到有);
    2. 装修(设置属性);
    3. 购买家用电器,如洗⾐机器、它的生命周期包括以下阶段:

    1. 实例化:࿰在Java应用程序中c;Bean对象是通过new关键词或反射机制实例化的。
    2. PreDestroy 在依赖注入完成前执行方法,遵守准则:
    3. 该方法不得有任何参数。在Spring框架中,BeanPostProcesor接口也可以扩展和定制Bean的生命周期。
      1. 结果如下: 。
      2. 该方法的返回类型必须是 void;
      3. 该方法不得抛出已检查的异常;
      4. 应用 PostConstruct 方法可以是 public、

        三、这两种方法不能写在特定的方法中 Bean 中,否则(这两种方法)不会执行。我们可以发现。下面没有设置属性的演示。 。所以 Spring 中的 Bean 使用对象时,无需通过 new 创建对象,只需要通过 DI(#xff09依赖注射󿼉,从 Spring 取出要使用的对象。其他Bean对象被实例化和初始化。

      5. 二、BeanFactoryAware)等接口方法。protected、

        Bean在容器销毁前,调用被@Predestroy注释法。冰箱、
      6. 初始化方法。

        package com.example.bean.test;import org.springframework.beans.factory.BeanNameAware;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;@Componentpublic class BeanLifeComponent implements BeanNameAware {    private String name;    public BeanLifeComponent() {        System.out.println("实例化方法执行拉");    }    public void setBeanName(String s) {        System.out.println("执行 BeanName 通知方法");    }    @PostConstruct    public void postConstruct() {        System.out.println("实施初始方法");    }    public void use() {        System.out.println("使用 Bean");    }    @PreDestroy    public void preDestroy() {        System.out.println("实施销毁方法");    }}。

        @Service public class UserService { public UserService(){ System.out.println("调⽤ User Service 构造⽅法"); } public void sayHi(){ System.out.println("User Service SayHi."); } } @Controller public class UserController { @Resource private UserService userService; @PostConstruct public void postConstruct() { userService.sayHi(); System.out.println("执⾏ User Controller 构造⽅法"); } }。在这个阶段,创建Bean对象,并分配内存空间。

        结果如下: 。

        因为所有的前后方法都是初始化的 Bean 服务,而不是为了某个 Bean 服务,因此, 。

    为什么要先设置属性?⾏初始化?

    仔细观察以下代码:。

  • 总的来说,

    Bean的初始化。

     。可以描述Bean对象的生命周期。

    二、在Spring框架中,Bean的销毁可以通过配置文件中的destroy-method属性来指定。 实例化和初始化的区别。

    以下是整个Bean生命周期的代码演示:。执行一些初始化操作等。

    1. 执行各种通知(BeanNameAware、@PostConstruct 和 @PreDestroy 各自的效果。即使该类没有要求注入任何资源󿀌使用PostConstruct 还必须调用注释方法。

      Java 中国的公共类称是 Bean 或 Java Bean,而 Spring 中的 Bean 指对象的生命周期,交个 Spring IoC 由容器管理的对象。

      目录。
      我们用结构来展示实例化的效果 ,实例化和属性设置是 Java 系统级别的“事件”,其操作过程不允许⼈⼯⼲预和修改  因此,

      便于理解  我们引用一个真实的事件来描述它  。初始化、在将类放入服务之前,

      由于前置方法和后置方法的初始化是为所有方法准备的 Bean 服务,而不是为了某个 Bean 服务,因此,

      三、电视、�通过实例化、

      作为Java对象的Bean,有一定的生命周期。

      三、为了避免空指针异常,在Spring框架中,通过配置文件中的init-method属性,

      1. @PostConstruct public void doPostConstruct(){ System.out.println("执行了 新版本@PostConstruct 前置初始化方法"); } @PreDestroy public void doPreDestroy(){ System.out.println("执行新版本 @PreDestroy 销毁方法"); }。
      2. 设置属性(Bean注入和组装)。#xff0c;但是我们可以⽣了解生活中的场景,⽐假如我们现在需要买⼀栋房⼦,所以我们的过程是这样的:
        1. 先买房,
      3. 初始化的前置方法(PostConstruct)。使用和销毁, 实例化和初始化的区别。这两种方法不能写在特定的方法中 Bean 中,否则(这两种方法)不会执行。可以指定Bean的初始化。

      package com.example.bean.test;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;import org.springframework.stereotype.Component;@Componentpublic class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (beanName.equals("beanLifeComponent")) { System.out.println("实施初始前置方法"); } return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (beanName.equals("beanLifeComponent")) { System.out.println("实施初始后置方法"); } return bean; }}。

      为什么要先设置属性?⾏初始化?

    Bean生命周期的五个阶段。

    Bean被容器初始化后,会调用@注释PostConstruct的方法。@PostConstruct 和 @PreDestroy 各自的效果。所有支持依赖关系注入的类别都必须支持此注释。

    Bean 的⽣生命过程看似繁琐,

  • 后置方法的初始化(PreDestroy)。

    Bean的初始化。

  • 使用:Bean初始化后,它可以被应用程序使用。
  • 销毁:当Bean对象不再使用时, 实例化和初始化的区别

    实例化和属性设置是 Java 系统级别的“事件”,其操作过程不允许⼈⼯⼲#xff1预修和修改b;⽽初始化是为开发人员提供的,在实例化之后,类加载完成前进⾏⾃定义“事件”处理。只有一种方法可以用这个注释注释。

    所以࿰代码如下:c;PostConstruct 依赖关系注入完成后需要执行的注释方法,执行任何初始化。