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

网友投稿 269 2023-03-23


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

基本概念

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

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

lazy-init

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

定义 Bean:

public class Animals {

public Animals(){

System.out.println("creating...");

}

}

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

调用验证:

// 创建容器

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...");

}

}

在配置文件中定义:

调用验证:

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 文件中配置

在 Ioc 容器中实例化该 Bean,在销毁它

// 实例化 Bean

FileSystemXmlApplicationContext context = ...

// 销毁 Bean

context.registerShutdownHook();

// 输出内容:

// enter room...

// turn on...

// turn off...

总结

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:包含接口测试用例通过标准有哪些的词条
下一篇:c 服务接口开发教程(c#接口方法)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~