欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring配置使用之Bean生命周期详解

程序员文章站 2024-04-02 09:17:22
基本概念 spring 中的 bean 的生命周期,指的是 bean 从创建到销毁的过程。 下面来探究下几个有关 bean 生命周期配置的属性。 lazy...

基本概念

spring 中的 bean 的生命周期,指的是 bean 从创建到销毁的过程。

下面来探究下几个有关 bean 生命周期配置的属性。

lazy-init

lazy-init 表示延迟加载 bean,默认在 spring ioc 容器初始化时会实例化所有在配置文件定义的 bean,若启用了 lazy-init 则在调用 bean 时才会去创建 bean。

定义 bean:

public class animals {
   public animals(){
     system.out.println("creating...");
   }
}

配置方式如下(以 xml 文件为例):

<!-- 表示启用了延迟加载 -->
<bean id="animals" class="com.demo.animals" lazy-init="true"/>

<!-- 不启用延迟加载 -->
<bean id="animals" class="com.demo.animals" lazy-init="default"/>
<bean id="animals" class="com.demo.animals" />

调用验证:

// 创建容器
string location = ...
applicationcontext factory = new filesystemxmlapplicationcontext(location);

// 输出结果:
// 若启用了 lazy-init 则输出 creating...,否则无打印信息。

depends-on

depends-on 是指指定 bean 初始化及销毁时的顺序。该属性可以用于标识当前 bean 初始化之前显式地强制一个或多个 bean 被初始化。若指定 bean 的作用域都是 singleton 时,表示该属性指定的 bean 要在当前 bean 销毁之前被销毁。

在 bean 中定义:

public class beanone{
   public beanone(){
     system.out.println("beanone...");
   }
}
public class beantwo{
   public beantwon(){
     system.out.println("beantwo...");
   }
}

在配置文件中定义:

<bean id="beanone" class="com.demo.beanone" lazy-init="true" depends-on="beantwo" /> 
<bean id="beantwo" class="com.demo.beantwo" lazy-init="true" /> 

调用验证:

string location = ...
applicationcontext factory = new filesystemxmlapplicationcontext(location);
beanone beanone= (beanone)factory.getbean("beanone");
// 输出结果:
// beantwo...
// beanone...

观察输出结果,调用 beanone 时,spring 会自动创建 beantwo 实例。

init-method & destory-method

当实例化一个 bean 时,可能需要执行一个初始化操作来确保该 bean 可用状态。同样地,当不需要 bean 时,将其从容器中移除时,可能还需要按顺序执行一些清楚工作。

为 bean 定义初始化和销毁操作,需要使用 init-method 和 destory-method 属性。

定义 bean

// 进入房间后要开灯,离开房间后要关灯
public class room {
  public room(){
    system.out.println("enter room...");
  }
  public void turnonlights(){
    system.out.println("turn on...");
  }
  public void turnofflights(){
    system.out.println("turn off...");
  }
}

在 xml 文件中配置

<bean class="com.demo.room" init-method="turnonlights" destroy-method="turnofflights"/>

在 ioc 容器中实例化该 bean,在销毁它

// 实例化 bean
filesystemxmlapplicationcontext context = ...
// 销毁 bean
context.registershutdownhook(); 
// 输出内容:
// enter room...
// turn on...
// turn off...

总结

以上就是本文关于spring配置使用之bean生命周期详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:spring中bean的继承与抽象代码示例spring中的factorybean代码示例等,有什么问题,欢迎大家留言交流讨论。感谢朋友们对网站的支持!