当前位置: 首页 > news >正文

国外做多媒体展览的网站上海哪家做公司网站

国外做多媒体展览的网站,上海哪家做公司网站,个人网页制作成品免费下载,打开小程序入口直接进入目录 概述 Spring Bean生命周期阶段 1. 实例化阶段 2. 属性赋值阶段 3. Aware接口回调阶段 4. BeanPostProcessor前置处理 5. 初始化阶段 PostConstruct注解方法 InitializingBean接口 自定义init方法 6. BeanPostProcessor后置处理 7. Bean使用阶段 8. 销毁阶段 …

目录

概述

Spring Bean生命周期阶段

1. 实例化阶段

2. 属性赋值阶段

3. Aware接口回调阶段

4. BeanPostProcessor前置处理

5. 初始化阶段

@PostConstruct注解方法

InitializingBean接口

自定义init方法

6. BeanPostProcessor后置处理

7. Bean使用阶段

8. 销毁阶段

@PreDestroy注解方法

DisposableBean接口

自定义destroy方法

完整示例代码

1. 定义Bean类

2. 配置BeanPostProcessor

3. 配置类

4. 测试类

生命周期流程图

总结


概述

Spring Bean的生命周期是Spring框架的核心概念之一,理解Bean从创建到销毁的整个过程对于开发高质量的Spring应用程序至关重要。本文将详细梳理Spring Bean生命周期的各个阶段,并通过代码示例展示每个关键节点。

Spring Bean生命周期阶段

1. 实例化阶段

Spring容器通过构造函数或工厂方法创建Bean实例

public class ExampleBean {public ExampleBean() {System.out.println("1. Bean实例化 - 构造函数执行");}
}

2. 属性赋值阶段

Spring容器注入Bean的属性和依赖

public class ExampleBean {private String name;private AnotherBean anotherBean;// Setter方法用于属性注入public void setName(String name) {System.out.println("2. 属性注入 - name: " + name);this.name = name;}public void setAnotherBean(AnotherBean anotherBean) {System.out.println("2. 依赖注入 - anotherBean");this.anotherBean = anotherBean;}
}

3. Aware接口回调阶段

Bean实现Aware接口获取容器资源

public class ExampleBean implements BeanNameAware, BeanFactoryAware, ApplicationContextAware {@Overridepublic void setBeanName(String name) {System.out.println("3. BeanNameAware - Bean名称: " + name);}@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println("3. BeanFactoryAware - BeanFactory注入");}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {System.out.println("3. ApplicationContextAware - ApplicationContext注入");}
}

4. BeanPostProcessor前置处理

BeanPostProcessor的postProcessBeforeInitialization方法

@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof ExampleBean) {System.out.println("4. BeanPostProcessor前置处理 - " + beanName);}return bean;}
}

5. 初始化阶段

@PostConstruct注解方法
public class ExampleBean {@PostConstructpublic void postConstruct() {System.out.println("5.1 @PostConstruct方法执行");}
}
InitializingBean接口
public class ExampleBean implements InitializingBean {@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("5.2 InitializingBean.afterPropertiesSet()执行");}
}
自定义init方法
public class ExampleBean {public void customInit() {System.out.println("5.3 自定义init方法执行");}
}// 配置类中指定init方法
@Configuration
public class AppConfig {@Bean(initMethod = "customInit")public ExampleBean exampleBean() {return new ExampleBean();}
}

6. BeanPostProcessor后置处理

BeanPostProcessor的postProcessAfterInitialization方法

@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof ExampleBean) {System.out.println("6. BeanPostProcessor后置处理 - " + beanName);}return bean;}
}

7. Bean使用阶段

Bean完全初始化,可供应用程序使用

@Service
public class BusinessService {private final ExampleBean exampleBean;public BusinessService(ExampleBean exampleBean) {this.exampleBean = exampleBean;}public void doBusiness() {System.out.println("7. Bean使用阶段 - 执行业务逻辑");}
}

8. 销毁阶段

@PreDestroy注解方法
public class ExampleBean {@PreDestroypublic void preDestroy() {System.out.println("8.1 @PreDestroy方法执行");}
}
DisposableBean接口
public class ExampleBean implements DisposableBean {@Overridepublic void destroy() throws Exception {System.out.println("8.2 DisposableBean.destroy()执行");}
}
自定义destroy方法
public class ExampleBean {public void customDestroy() {System.out.println("8.3 自定义destroy方法执行");}
}// 配置类中指定destroy方法
@Configuration
public class AppConfig {@Bean(destroyMethod = "customDestroy")public ExampleBean exampleBean() {return new ExampleBean();}
}

完整示例代码

1. 定义Bean类

import org.springframework.beans.factory.*;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;public class LifecycleBean implements BeanNameAware, BeanFactoryAware, ApplicationContextAware, InitializingBean, DisposableBean {private String name;private AnotherBean anotherBean;public LifecycleBean() {System.out.println("1. 构造函数执行 - Bean实例化");}public void setName(String name) {System.out.println("2. 属性注入 - name: " + name);this.name = name;}public void setAnotherBean(AnotherBean anotherBean) {System.out.println("2. 依赖注入 - anotherBean");this.anotherBean = anotherBean;}@Overridepublic void setBeanName(String name) {System.out.println("3. BeanNameAware - Bean名称: " + name);}@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println("3. BeanFactoryAware - BeanFactory注入");}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {System.out.println("3. ApplicationContextAware - ApplicationContext注入");}@PostConstructpublic void postConstruct() {System.out.println("5.1 @PostConstruct方法执行");}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("5.2 InitializingBean.afterPropertiesSet()执行");}public void customInit() {System.out.println("5.3 自定义init方法执行");}public void doSomething() {System.out.println("7. Bean使用阶段 - 执行业务方法");}@PreDestroypublic void preDestroy() {System.out.println("8.1 @PreDestroy方法执行");}@Overridepublic void destroy() throws Exception {System.out.println("8.2 DisposableBean.destroy()执行");}public void customDestroy() {System.out.println("8.3 自定义destroy方法执行");}
}

2. 配置BeanPostProcessor

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof LifecycleBean) {System.out.println("4. BeanPostProcessor前置处理 - " + beanName);}return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (bean instanceof LifecycleBean) {System.out.println("6. BeanPostProcessor后置处理 - " + beanName);}return bean;}
}

3. 配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AppConfig {@Bean(initMethod = "customInit", destroyMethod = "customDestroy")public LifecycleBean lifecycleBean() {LifecycleBean bean = new LifecycleBean();bean.setName("示例Bean");return bean;}@Beanpublic AnotherBean anotherBean() {return new AnotherBean();}
}

4. 测试类

import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class LifecycleTest {public static void main(String[] args) {System.out.println("Spring容器启动...");AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);System.out.println("\n获取Bean并执行业务方法...");LifecycleBean bean = context.getBean(LifecycleBean.class);bean.doSomething();System.out.println("\nSpring容器关闭...");context.close();System.out.println("程序结束");}
}

生命周期流程图

Bean生命周期完整流程:
1. 实例化 → 2. 属性赋值 → 3. Aware接口回调 → 4. BeanPostProcessor前置处理 →
5. 初始化(@PostConstruct → InitializingBean → 自定义init) → 6. BeanPostProcessor后置处理 →
7. Bean就绪可用 → 8. 销毁(@PreDestroy → DisposableBean → 自定义destroy)

总结

Spring Bean的生命周期是一个复杂但有序的过程,理解每个阶段的执行顺序和用途对于:

  1. 调试和问题排查:能够快速定位Bean初始化相关的问题
  2. 扩展功能:通过BeanPostProcessor等机制扩展Spring功能
  3. 资源管理:正确管理数据库连接、线程池等资源
  4. 性能优化:合理使用各种初始化机制提升应用性能
http://www.dtcms.com/a/485594.html

相关文章:

  • 白人与黑人做爰网站征婚网站怎么做
  • 住宅与建设部网站易店无忧官网
  • 重庆网站推广计划宁波网站seo诊断工具
  • 网站访问量来源网站建设 杭州市萧山区
  • 专业网站建设制作价格开发一个企业官网多少钱
  • 网站cms系统源码go 做视频网站
  • 网站建设 工作方案2021深圳装修公司排名前十强
  • 长春网站建设找源晟品牌策划设计
  • 无锡网站推广$做下拉去118cr做一个网站最便宜多少钱
  • 台州网站制作公司python基础教程ppt
  • 南宁网站建设官网企业网站建立哪
  • 江西网站开发费用做移动网站优化排名首页
  • 网站如何提交关键词淘宝店铺网站建设可行性报告
  • 建站公司互橙知乎建企业网站怎么做
  • 做网站付款方式在门户网站做产品单页多少钱一天
  • 网站建设规划方案.ppt全国招商代理项目
  • wordpress 4.7.5 中文优质的seo快速排名优化
  • 网站建设发展史淘宝网官网登录网页版
  • wordpress 点评类网站wordpress nextgen gallery
  • 一起做网店类型的网站wordpress 定时重启
  • 佛山有那几家做网站湖南省住房与城乡建设网站
  • 设计网站能否用素材来制作广告益阳营销网站建设
  • php企业中英文网站源码西安做商铺的网站
  • 网站建设服务标准WordPress stock
  • 网站建设氵金手指专业国内顶尖的公司
  • iis默认网站删除小程序商店下载
  • 本地的天津网站建设wordpress安装器
  • 简要概括自建网站的优缺点wordpress 文件目录结构
  • 品牌网站设计地址无代码开发平台有哪些
  • dede 两个网站图片路径一般做音响的有哪些网站