栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

spring bean 的init-method和destroy-method

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring bean 的init-method和destroy-method

在spring中可以通过配置文件或者注解指定,在bean初始化之后要执行的初始化方法,以及在bean销毁时执行的方法。

我们首先要建好spring的开发环境,参考:http://outofmemory.cn/java/spring/spring-hello-world

我们先建一个Person类:

package cn.outofmemory.spring; public class Person { public void initialize() { System.out.println("I'm initialized"); } public void destroy() { System.out.println("I'm destroied"); } public void doSomething() { ; } }

这个类中定义了三个方法,分别为initialize,destory和doSomething。顾名思义,initialize是希望在类初始化时执行,而destroy方法则是希望在bean销毁时执行。

spring配置文件如下:

    

在bean中我们通过了init-method和destroy-method属性,指定了在初始化和销毁时要执行的方法。

App类代码如下:

package cn.outofmemory.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;  public class App { public static void main(String[] args) { ApplicationContext appContext = new ClassPathXmlApplicationContext("/spring.xml"); Person p = appContext.getBean(Person.class); ((ClassPathXmlApplicationContext) appContext).close(); System.out.println("exit."); } }

在App类的main方法中,我们首先初始化了ApplicationContext实例,然后从appContext中获得了我们配置的Person bean,然后将appContext关闭,最后退出了程序。

我们看下输出:

I'm initialized I'm destroied exit.

可以看到输出了Person类的初始化和销毁方法所做的输出。这里需要注意初始化方法会在bean初始化时执行,如果bean的scope是prototype,那么会在每一次bean初始化时都会执行,如果是singleton,那么只在第一次初始化时执行。而scope为singleton的bean的destroy方法则是在容器关闭时执行,而scope为prototype的bean是不会执行destroy方法的,这是spring设计使然,要特别注意。

原文链接:http://outofmemory.cn/java/spring/spring-bean-init-method-and-destroy-method

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235759.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号