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

线上网站制作网店运营在哪里学比较好些

线上网站制作,网店运营在哪里学比较好些,芯片最新消息,适合这手机浏览器主页的网站目录 一、Spring IOC容器概述 二、IOC容器的启动过程 阶段一:容器初始化 1.1创建 ApplicationContext 实例 1.2refresh() 核心流程 阶段二:Bean 实例化与初始化 一、Spring IOC容器概述 Spring IOC(Inversion of Control,控…

目录

一、Spring IOC容器概述

二、IOC容器的启动过程

阶段一:容器初始化

1.1创建 ApplicationContext 实例

1.2refresh() 核心流程

阶段二:Bean 实例化与初始化


一、Spring IOC容器概述

Spring IOC(Inversion of Control,控制反转)容器是Spring框架的核心组件,它负责管理对象的创建、配置和生命周期。IOC容器通过依赖注入(DI)来实现控制反转。


 

二、IOC容器的启动过程

阶段一:容器初始化

1.1创建 ApplicationContext 实例

这是启动的入口。当我们执行 new ClassPathXmlApplicationContext("beans.xml") 或 new AnnotationConfigApplicationContext(AppConfig.class) 时,容器的骨架就建立起来了。在其构造函数内部,会调用核心的 refresh() 方法

1.2refresh() 核心流程
  • 1.2.1 准备阶段 (prepareRefresh): 设置容器的启动时间、状态标记(激活状态),并验证环境中必需的属性。
  • 1.2.2 创建/获取 BeanFactory (obtainFreshBeanFactory): 这是IOC容器的核心。此步骤会创建一个 DefaultListableBeanFactory 实例,并开始加载Bean的“定义信息”(BeanDefinition)。
    • XML方式: 解析XML文件,将每个 <bean> 标签转换成一个 BeanDefinition 对象。
    • 注解方式: 扫描指定的配置类(@Configuration)和包路径,将带有 @Component、@Service、@Bean 等注解的类转换成 BeanDefinition 对象。
    • 注意: 此时只是加载了Bean的“图纸”(元数据),还没有创建任何Bean的实例。

               

  • 1.2.3 准备 BeanFactory (prepareBeanFactory): 对 BeanFactory 进行一系列的设置,比如设置类加载器(ClassLoader)、添加默认的 BeanPostProcessor(Bean后置处理器)等,为后续Bean的创建做好准备。
  • 1.2.4 BeanFactory 后置处理 (invokeBeanFactoryPostProcessors): 这是一个非常重要的扩展点。Spring会查找并调用所有实现了 BeanFactoryPostProcessor 接口的Bean。这些处理器可以在所有Bean实例创建之前,读取并修改 BeanDefinition 的元数据。
    • 常见应用: PropertySourcesPlaceholderConfigurer 就是一个典型的例子,它会扫描 BeanDefinition 并将 ${...} 占位符替换为配置文件中的实际值。
  • 1.2.5 注册 BeanPostProcessor (registerBeanPostProcessors): 查找并注册所有实现了 BeanPostProcessor 接口的Bean。这些处理器将会在后续Bean实例化的各个阶段被调用,用于对Bean实例本身进行增强处理(例如AOP代理)。注意,这里只是注册,并不会立即执行。
  • 1.2.6 初始化其他组件: 初始化消息源(用于国际化)、事件广播和注册事件监听器。
  • 1.2.7 实例化所有非懒加载单例Bean (finishBeanFactoryInitialization): 容器会遍历所有 BeanDefinition,并主动创建所有作用域为singleton、非lazy-init的Bean。这个过程会触发下面描述的“Bean实例化”阶段。
  • 1.2.8 完成刷新 (finishRefresh): 发布 ContextRefreshedEvent 事件,通知所有监听器容器已经刷新完成。这标志着IOC容器已经完全准备就绪。

阶段二:Bean 实例化与初始化

这个阶段由上一步的 finishBeanFactoryInitialization 触发,对每一个单例Bean进行创建。

  1. 实例化 (Instantiation): Spring通过反射CGLIB调用Bean的构造函数,创建出一个空白对象。
  2. 填充属性 (Populate Properties): Spring根据 @Autowired、@Resource 等注解或XML配置,进行依赖注入(DI),将该Bean依赖的其他Bean或值设置到其属性中。

    此时可能会出现循环依赖问题,spring使用三级缓存来解决此问题详细请看这篇博客

  3. 调用Aware接口: 如果Bean实现了 BeanNameAwareBeanFactoryAwareApplicationContextAware 等接口,Spring会调用相应的方法,将Bean的名称、所在的工厂、所在的上下文等信息注入进来。
  4. BeanPostProcessor 前置处理: 调用所有已注册的 BeanPostProcessor 的 postProcessBef  oreInitialization 方法。这是一个在Bean初始化(init-method)之前进行干预的机会。
  5. 初始化 (Initialization): 调用Bean自身的初始化方法。如果Bean上定义了 @PostConstruct 注解的方法,或者在XML中配置了 init-method,它们会在此处被执行。
  6. BeanPostProcessor 后置处理: 调用所有已注册的 BeanPostProcessor 的 postProcessAfterInitialization 方法。这是另一个极其重要的扩展点。

    常见应用: Spring AOP的代理对象就是在这里生成的。AbstractAutoProxyCreator 这个后置处理器会检查当前Bean是否需要被代理,如果需要,它会返回一个代理对象来替换原始的Bean实例。所以我们从容器中获取的可能是原始对象,也可能是一个代理对象。

  7. 放入单例池: 经过以上所有步骤后,一个完整的Bean就创建好了。它会被放入一个Map(通常称为“单例缓存池”或“Singleton Cache”)中,以便后续直接获取。

至此,整个Spring IOC容器的启动流程就完成了。现在,应用程序可以使用 context.getBean() 来获取任何已经初始化好的Bean实例了

                 

 

 

http://www.dtcms.com/wzjs/327338.html

相关文章:

  • html在线编写网站上海优化价格
  • 用tomcat做网站苏州seo网站推广哪家好
  • 网络销售招聘网站排名优化外包
  • 哪些编程语言适合网站开发清博大数据舆情监测平台
  • 做影视网站被起诉怎样推广自己的app
  • js网站模板免费下载推广商
  • 免费音乐网站建设互联网营销师证书怎么考
  • 泰安集团网站建设多少钱新乡网络推广外包
  • 大型html5浅蓝色网站设计公司dede模板项目营销推广方案
  • 惠州附近公司做网站建设多少钱本地推广最好用的平台
  • 福州集团网站建设互联网营销平台有哪些
  • 微号网站开发网络营销的seo是做什么的
  • ai写作网站宁波网络推广方法
  • 不能制作网页的软件是安卓内核级优化神器
  • wordpress把文章转语音优化百度搜索
  • 阿里云做的网站这么卡的安卓优化清理大师
  • 免费做印章的网站杭州seo推广服务
  • 郑州网站建设维护公司免费推广产品的平台
  • 做印尼电商独立站的网站网站权重划分
  • 山东大良网站建设职业技能培训学校
  • 天津交通建设委员会网站重庆网站开发公司
  • oa网站建设2022最新永久地域网名
  • 网站建设和网站开发的区别松松软文
  • 做视频网站要申请什么许可证网站推广技巧
  • 淘宝客网站设计短视频搜索优化
  • 新加坡政府网站建设特点_营业推广方式
  • 大学生网站建设实践报告四川整站优化关键词排名
  • wordpress 手机菜单栏插件seo排名优化什么意思
  • 保定网站设计公司上海发布微信公众号
  • 房山区住房和城乡建设委员会网站青岛网站建设公司哪家好