您现在的位置是:首页 > 编程 > 

bean的生命周期

2025-07-27 20:12:17
bean的生命周期 一、流程图二、各环节介绍spring管理bean,通过反射到构造方法,实例化bean对象Bean实例化后对将Bean的引入和值注入到Bean的属性中BeanameAware.setBeaname(),获取设置bean的名称BeanFactoryAware.setBeanFactory(),获取BeanFactory容器实例即获取beanApplicationContext

bean的生命周期

一、流程图

二、各环节介绍

  1. spring管理bean,通过反射到构造方法,实例化bean对象
  2. Bean实例化后对将Bean的引入和值注入到Bean的属性中
  3. BeanameAware.setBeaname(),获取设置bean的名称
  4. BeanFactoryAware.setBeanFactory(),获取BeanFactory容器实例即获取bean
  5. ApplicationContextAware.setApplicationContext(),获取bean所在应用上下文引用
  6. BeanPostProcessor.postProcessBeforeInitialization(),前置处理器,获取bean,为bean填充属性
  7. InitializingBean.afterPropertiesSet(),初始化方法
  8. bean使用init-method声明了初始化方法
  9. BeanPostProcessor.postProcessBeforeInitialization(),后置处理器,获取bean
  10. DisposableBean.destory(),销毁方法
  11. bean使用destory-method声明了销毁方法

三、代码测试

代码语言:javascript代码运行次数:0运行复制
public class Book implements BeanameAware, BeanFactoryAware, ApplicationContextAware,
        InitializingBean, DisposableBean {
    private String bookame;
    public void setBookame(String bookame) {
        println("book注入属性值");
        this.bookame = bookame;
    }
    public Book() {
        println("book对象实例化");
    }
    @Override
    public void setBeaname(String name) {
        println("获取bean名字");
    }
    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        println("获取bean工厂实例");
    }
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        println("获取应用上下文");
    }
    @Override
    public void afterPropertiesSet() throws Exception {
        println("初始化方法");
    }
    public void definedInit(){
        println("自定义初始化方法");
    }
    @Override
    public void destroy() throws Exception {
        println("销毁方法");
    }
    public void definedDestroy(){
        println("自定义销毁方法");
    }
}
代码语言:javascript代码运行次数:0运行复制
public class MyBeanPostProcessor implements BeanPostProcessor {
    // 容器加载的时候会加载一些其他的bean,会调用初始化前和初始化后方法
    public Object postProcessBeforeInitialization(Object bean, String beaname) throws BeansException {
        if(bean instanceof Book){
            println("BeanPostProcessor.before invoke");
        }
        return bean;
    }
    public Object postProcessAfterInitialization(Object bean, String beaname) throws BeansException {
        if(bean instanceof Book){
            println("BeanPostProcessor.after invoke");
        }
        return bean;
    }
}
代码语言:javascript代码运行次数:0运行复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=";
       xmlns:xsi=";
       xsi:schemaLocation=" .xsd">
    <bean id="book" class="com.xc.Book" init-method="definedInit" destroy-method="definedDestroy" >
        <property name="bookame" value="西游记"/>
    </bean>
    <bean id="myBeanPostProcessor" class="com.xc.MyBeanPostProcessor" />
</beans>
代码语言:javascript代码运行次数:0运行复制
public class Client {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        Book book = (Book) context.getBean("book");
        context.destroy();
    }
}

结果:
book对象实例化
book注入属性值
获取bean名字
获取bean工厂实例
获取应用上下文
BeanPostProcessor.before invoke
初始化方法
自定义初始化方法
BeanPostProcessor.after invoke
销毁方法
自定义销毁方法

.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent 删除对象生命周期容器publicsystem

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1162937.html

相关标签:无
上传时间: 2025-07-20 20:45:22

上一篇:springMVC基础

下一篇:jdbc基础

留言与评论(共有 14 条评论)
本站网友 英国aa
15分钟前 发表
实例化bean对象Bean实例化后对将Bean的引入和值注入到Bean的属性中BeanameAware.setBeaname()
本站网友 无线网络工程
19分钟前 发表
各环节介绍spring管理bean
本站网友 邢利斌
10分钟前 发表
DisposableBean { private String bookame; public void setBookame(String bookame) { println("book注入属性值"); this.bookame = bookame; } public Book() { println("book对象实例化"); } @Override public void setBeaname(String name) { println("获取bean名字"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { println("获取bean工厂实例"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { println("获取应用上下文"); } @Override public void afterPropertiesSet() throws Exception { println("初始化方法"); } public void definedInit(){ println("自定义初始化方法"); } @Override public void destroy() throws Exception { println("销毁方法"); } public void definedDestroy(){ println("自定义销毁方法"); } }代码语言:javascript代码运行次数:0运行复制public class MyBeanPostProcessor implements BeanPostProcessor { // 容器加载的时候会加载一些其他的bean
本站网友 文家二手房
19分钟前 发表
DisposableBean { private String bookame; public void setBookame(String bookame) { println("book注入属性值"); this.bookame = bookame; } public Book() { println("book对象实例化"); } @Override public void setBeaname(String name) { println("获取bean名字"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { println("获取bean工厂实例"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { println("获取应用上下文"); } @Override public void afterPropertiesSet() throws Exception { println("初始化方法"); } public void definedInit(){ println("自定义初始化方法"); } @Override public void destroy() throws Exception { println("销毁方法"); } public void definedDestroy(){ println("自定义销毁方法"); } }代码语言:javascript代码运行次数:0运行复制public class MyBeanPostProcessor implements BeanPostProcessor { // 容器加载的时候会加载一些其他的bean
本站网友 天骄之路
25分钟前 发表
BeanFactoryAware
本站网友 肯德基订餐官网
1分钟前 发表
获取bean所在应用上下文引用BeanPostProcessor.postProcessBeforeInitialization()
本站网友 酒店集团
29分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看对象生命周期容器publicsystem
本站网友 上海居住证新政
15分钟前 发表
DisposableBean { private String bookame; public void setBookame(String bookame) { println("book注入属性值"); this.bookame = bookame; } public Book() { println("book对象实例化"); } @Override public void setBeaname(String name) { println("获取bean名字"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { println("获取bean工厂实例"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { println("获取应用上下文"); } @Override public void afterPropertiesSet() throws Exception { println("初始化方法"); } public void definedInit(){ println("自定义初始化方法"); } @Override public void destroy() throws Exception { println("销毁方法"); } public void definedDestroy(){ println("自定义销毁方法"); } }代码语言:javascript代码运行次数:0运行复制public class MyBeanPostProcessor implements BeanPostProcessor { // 容器加载的时候会加载一些其他的bean
本站网友 米醋的作用
2分钟前 发表
流程图二
本站网友 好孕汤
7分钟前 发表
InitializingBean
本站网友 远洋大亚物流
23分钟前 发表
后置处理器
本站网友 世纪同城快递查询
24分钟前 发表
实例化bean对象Bean实例化后对将Bean的引入和值注入到Bean的属性中BeanameAware.setBeaname()
本站网友 3389远程连接器
29分钟前 发表
代码测试代码语言:javascript代码运行次数:0运行复制public class Book implements BeanameAware