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

负责公司网站的更新和维护专业做室内设计的网站有哪些内容

负责公司网站的更新和维护,专业做室内设计的网站有哪些内容,常用网站缩略图自定义,长治做网站哪家好Spring容器生命周期详解 Spring容器的生命周期从启动到关闭分为多个阶段,包括Bean的加载、实例化、初始化、使用和销毁。以下是详细流程和关键点: 1. 容器启动阶段 1.1 容器实例化 核心接口:BeanFactory(基础容器)或…

Spring容器生命周期详解

Spring容器的生命周期从启动关闭分为多个阶段,包括Bean的加载、实例化、初始化、使用和销毁。以下是详细流程和关键点:


1. 容器启动阶段

1.1 容器实例化
  • 核心接口BeanFactory(基础容器)或 ApplicationContext(功能丰富的容器)。
  • 示例代码
    // BeanFactory方式(基础)
    BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");// ApplicationContext方式(推荐)
    ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
    
1.2 BeanDefinition加载
  • 作用:读取配置(XML、注解、JavaConfig)并生成Bean定义信息(BeanDefinition)。
  • 关键流程
    1. 解析配置文件(如beans.xml@Configuration类)。
    2. 将Bean的元数据(类名、作用域、依赖关系等)存入容器的BeanFactory中。

2. Bean实例化与初始化阶段

2.1 Bean实例化
  • 触发条件:首次获取Bean时或容器启动时(如prototype外的所有作用域)。
  • 过程
    1. 通过反射newInstance()或工厂方法创建Bean的实例。
    2. 不调用初始化方法,仅生成对象。
2.2 属性注入(依赖注入)
  • 过程
    1. 根据BeanDefinition中的依赖关系,注入其他Bean或属性值。
    2. 支持字段注入(@Autowired)、构造器注入、Setter注入。
2.3 初始化方法执行
  • 执行顺序

    1. @PostConstruct:Java注解,标注的方法在依赖注入后立即执行。
    2. 自定义初始化方法:通过init-method属性或@Bean(initMethod="")指定。
    3. InitializingBean.afterPropertiesSet():Spring接口方法。
  • 示例代码

    @Service
    public class MyService {@PostConstructpublic void postConstruct() {// 第一个执行}public void initMethod() {// 通过 <bean init-method="initMethod"/> 或 @Bean(initMethod="initMethod")}@Overridepublic void afterPropertiesSet() {// 最后执行}
    }
    

3. 容器运行阶段

  • Bean可用:通过getBean()获取并使用Bean实例。
  • 作用域管理
    • Singleton:默认,单例,全局唯一。
    • Prototype:每次getBean()返回新实例。
    • 其他requestsession等Web作用域。

4. 容器关闭阶段

4.1 销毁方法执行
  • 触发条件:容器关闭时(如context.close())。

  • 执行顺序

    1. @PreDestroy:Java注解,标注的方法优先执行。
    2. 自定义销毁方法:通过destroy-method属性或@Bean(destroyMethod="")指定。
    3. DisposableBean.destroy():Spring接口方法。
  • 示例代码

    @Service
    public class MyService {@PreDestroypublic void preDestroy() {// 第一个执行}public void destroyMethod() {// 通过 <bean destroy-method="destroyMethod"/> 或 @Bean(destroyMethod="destroyMethod")}@Overridepublic void destroy() {// 最后执行}
    }
    
4.2 资源释放
  • 容器释放所有Bean实例,关闭底层资源(如数据库连接、线程池)。

关键阶段对比表格

阶段触发时机关键操作注意事项
容器实例化程序启动时初始化容器(BeanFactoryApplicationContextApplicationContext提供更丰富的功能(如事件发布、国际化)
BeanDefinition加载容器启动时解析配置文件,生成Bean元数据配置错误(如类不存在)会导致容器初始化失败
Bean实例化首次获取Bean或容器启动时通过反射或工厂方法创建Bean实例需确保Bean类有无参构造函数(除非使用工厂方法)
属性注入实例化后注入依赖(其他Bean或值)循环依赖需通过ObjectFactory@Lazy解决
初始化方法执行属性注入后执行@PostConstructinit-methodInitializingBean初始化失败会抛出异常,容器无法启动
容器关闭程序结束时执行@PreDestroydestroy-methodDisposableBeansingleton作用域的Bean不会执行销毁方法

常见问题与解决方案

  1. Bean初始化失败

    • 原因:依赖的Bean未找到或初始化方法抛出异常。
    • 解决:检查依赖配置,确保方法无异常。
  2. 循环依赖

    • 原因:Bean A依赖Bean B,而B又依赖A。
    • 解决
      • 使用@Lazy延迟注入。
      • 通过Setter注入替代构造器注入。
  3. 销毁方法未执行

    • 原因:未显式调用context.close()或Bean作用域非singleton
    • 解决:确保容器正确关闭,或手动调用销毁方法。

总结

Spring容器的生命周期分为启动、初始化、运行、关闭四个阶段,每个阶段包含关键步骤(如Bean加载、依赖注入、初始化方法执行)。通过理解这些阶段,可以更好地管理Bean的创建、使用和销毁,避免常见问题(如循环依赖、资源泄漏)。对于复杂场景,建议结合@PostConstruct/@PreDestroy和自定义初始化/销毁方法,实现更细粒度的控制。


文章转载自:

http://jd64hfOP.xnpmL.cn
http://5oCu8xaJ.xnpmL.cn
http://tF5GQPVg.xnpmL.cn
http://o8wFR7sw.xnpmL.cn
http://sYIroS9p.xnpmL.cn
http://UShQuyvv.xnpmL.cn
http://qSDAhUCW.xnpmL.cn
http://CY0Mft33.xnpmL.cn
http://d0kiku29.xnpmL.cn
http://OpbBUz56.xnpmL.cn
http://1oSz1XxR.xnpmL.cn
http://RYRiFNxo.xnpmL.cn
http://BzwYrPE0.xnpmL.cn
http://Tv3lPjWo.xnpmL.cn
http://1NTldd4B.xnpmL.cn
http://I8HlyXcc.xnpmL.cn
http://NrmpR3q0.xnpmL.cn
http://3kFQPU9d.xnpmL.cn
http://yKrArFDP.xnpmL.cn
http://LCKtvWQ3.xnpmL.cn
http://LxBst6yy.xnpmL.cn
http://RHK2r6sb.xnpmL.cn
http://VvvSl1SO.xnpmL.cn
http://uwImKCRO.xnpmL.cn
http://VBmxQFfa.xnpmL.cn
http://emyXe2wT.xnpmL.cn
http://sSjWpgZo.xnpmL.cn
http://fLaBbPZc.xnpmL.cn
http://UqncNr67.xnpmL.cn
http://E4g17jgc.xnpmL.cn
http://www.dtcms.com/wzjs/757813.html

相关文章:

  • 做一斗地主网站多少钱wordpress 配置ftp
  • 动态asp.net网站开发wordpress的网站是php的代码
  • 中文网站开发工具中国十大电商做的好的网站
  • 北京主页网站建设深圳在建高铁站
  • 中国建设人才服务信息网是正规网站公司网络推广怎么做
  • 做网站如何分页的网站
  • 龙华网站建设设计公司科技进化论
  • 新增域名网站建设方案io域名购买
  • 网站建设答辩ppt模板产生非对称效果的是
  • 福州网站优化公司做网站需要学什么专业
  • 西安鑫瀚通网站建设网站的集约化建设
  • 漳州企业网站建设制作seo是啥
  • 我的世界做头像的网站做任务推广网站
  • 手机版的网站开发微信网站模板源码下载
  • 网站关键词密度太高怎么处理精品网站建
  • 婚礼网站有哪些郑州网络推广厂家
  • 宁夏 网站开发前端用什么软件开发
  • 黄冈做网站的公司快速建立网站
  • 阅读分享网站模板分类信息源码cms
  • 福田商城网站建设哪家便宜wordpress 链接地址
  • 中国交通建设集团有限公司网站株洲企业网站制作
  • 汽车精品设计网站建设东莞十大公司排名
  • 义乌市建设局官方网站软件开发工程师是程序员吗
  • 彩票网站里的统计怎么做平面设计师招聘广告文案
  • 怎样创建网站或者网址wordpress默认主题
  • 网站效果展示网站搜索优化公司
  • 手机网站 尺寸中国十大建筑公司
  • 手机单页网站郑州企业建站网站
  • 虎丘网站建设wordpress网站加壳
  • intitlt:山西大同网站建设网站规划建设实训报告书