首页 > 作文

详解Spring中Bean的作用域与生命周期

更新时间:2023-04-04 04:32:17 阅读: 评论:0

目录
一、bean的作用域二、bean的生命周期使用代码演示bean的生命周期

一、bean的作用域

通过spring容器创建一个bean的实例时,不仅可以完成bean的实例化,还可以使用bean的scope属性为bean设置作用域。

语法格式:<bean id=”别名” scope=”作用域” class=”对应实现类”>

作用域的种类:(sing)

singleton和prototype区别:(该两种比较常用)

① singleton单实例,prototype多实例

② 设置scope值是singleton时候,加载spring配置文件时候就会创建单实例对象

设置scope值是prototype时候,在加载spring配置文件时候暂时不会创建对象,在调用getbean方法时候才创建多实例对象

singleton作用域:

//cat.javapublic class cat {    private string name;    pub五年级上册数学期中lic void tname(string name) {        this.name = name;    }}

配置文件beans5.xml

<bean id="cat" scope="singleton" class="com.jd.dao.cat"优美句子摘抄>    <property name="name" value="大橘"></property></bean>

测试:

//bean的作用域测试方法@testpublic void cattest(){    //1.初始化spring容器,加载配置文件    applicationcontext applicationcontext = new classpathxmlapplicationcontext("beans5.xml");    //2.通过spring容器获取bean的实例    cat cat1 = (cat) applicationcontext.getbean("cat");    cat cat2 = (cat) applicationcontext.getbean("cat");    //3.输出获取的实例    system.out怎样补办身份证.println(cat1);    system.out.println(cat2);}

prototype作用域:

将配置文件beans5.xml中的scope属性改为prototype,再次运行测试:

<bean id="cat" scope="prototype" class="com.jd.dao.cat">    <property name="name" value="大橘"></property></bean>

3测试:

二、bean的生命周期

bean从创建到销毁称为bean的生命周期,大体上bean的生命周期共有七步:

(1)通过无参构造器创建bean实例

(2)调用属性tter方法为bean的属性设置值

(3)把bean实例传递bean后置处理器的方法postprocessbeforeinitialization

(4)调用bean的初始化的方法(需要配置初始化的方法)

(5)把bean实例传递bean后置处理器的方法postprocessafterinitialization

(6)获取使用已经创建的bean

(7)当容器关闭时候,调用bean的销毁的方法(需要配置销毁的方法)

注意:

① 初始化方法、销毁方法都需要在bean中作为属性手动配置;

② 只有singleton作用域的bean才会执行销毁方法;

使用代码演示bean的生命周期

(1)普通java bean:cat.java

public class cat {    private string name;    public void tname(string name) {        this.name = name;        system.out.println("第二步:调用属性tter方法为bean的属性设置值");    }    public cat(){        system.out.println("第一步;通过无参构造器创建bean实例");    }    //初始化方法(在配置文件中配置实现调用)    public void initmethod(){        system.out.println("第四步:调用bean的初始化的方法");    }    //销毁方法(在配置文件中配置实现调用)    public void destroymethod(){        system.out.println("第七步:当容器关闭时候,调用bean的销毁的方法");    }}

(2)mybeanpostprocessor实现beanp王昌龄从军行ostprocessor接口,实现后置处理器:mybeanpostprocessor.java

(spring中的aop就是通过实现beanpostprocessor接口实现的)

//mybeanpostprocessor实现beanpostprocessor接口,实现后置处理器public class mybeanpostprocessor implements beanpostprocessor {    @override    public object postprocessbeforeinitialization(object bean, string beanname) throws beanxception {        system.out.println("第三步:把bean实例传递bean后置处理器的方法");        return bean;    }    @override    public object postprocessafterinitialization(object bean, string beanname) throws beanxception {        system.out.println("第五步:把bean实例传递bean后置处理器的方法");        return bean;    }}

(3)配置文件:beans5.xml

<!--scope属性必须设置为singleton,否则创建的bean不会被销毁--><!--init-method属性配置初始化方法,destroy-method属性销毁方法--><bean id="cat" scope="singleton" class="com.jd.dao.cat" init-method="initmethod" destroy-method="destroymethod">    <property name="name" value="大橘"></property></bean><!--配置后置处理器,为当前配置文件中的所有bean添加后置处理器的处理--><bean id="mybeanpostprocessor" class="com.jd.dao.mybeanpostprocessor"></bean>

(4)测试

@testpublic void cattest(){    //1.初始化spring容器,加载配置文件    classpathxmlapplicationcontext applicationcontext = new classpathxmlapplicationcontext("beans5.xml");    //2.通过spring容器获取bean的实例    cat cat = (cat) applicationcontext.getbean("cat");    //3.输出获取的实例    system.out.println("第六步:获取创建bean实例"+cat);    //4.手动关闭    applicationcontext.clo();}

到此这篇关于详解spring中bean的作用域与生命周期的文章就介绍到这了,更多相关spring bean的作用域与生命周期内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大能量转化家以后多多支持www.887551.com!

本文发布于:2023-04-04 04:32:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/033bd6ad3461955611465c0c5c956bd0.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:详解Spring中Bean的作用域与生命周期.doc

本文 PDF 下载地址:详解Spring中Bean的作用域与生命周期.pdf

标签:方法   实例   配置文件   作用
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图