iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring中的refresh方法怎么用
  • 293
分享到

Spring中的refresh方法怎么用

2023-06-30 12:06:36 293人浏览 安东尼
摘要

这篇文章主要介绍“spring中的refresh方法怎么用”,在日常操作中,相信很多人在Spring中的refresh方法怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring中的refresh方法

这篇文章主要介绍“spring中的refresh方法怎么用”,在日常操作中,相信很多人在Spring中的refresh方法怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring中的refresh方法怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1 前言

了解原理性的一些内容之后就会在应用能够得心应手,在项目开发面试中,就能很好地 battle 和 show muscle。

2 源码入口哪里找

Spring 的源码阅读,需要找到入口文件,一般情况下在 Spring 项目中,由 Tomcat 容器启动后加载项目中设置的 WEB.xml,在改文件中添加项目的配置文件,监听器等内容,其中 DispatcherServlet 尤为重要,其 onRefresh 方法就是其核心操作。不过随着 SpringBoot 的诞生,配置化的思想成型后,获取源码的入口就相对简单了,核心需要关注 AbstractApplicationContext.refresh

获取方法的入口常见的如下所示:

# 通过配置文件来读取ClassPathXmlApplicationContext ct = new ClassPathXmlApplicationContext("bean.xml");# 通过配置类来加载AnnotationConfigApplicationContext ct = new AnnotationConfigApplicationContext(MainConfig.class);# 两者都是AbstractApplicationContext 的子类AbstractApplicationContext

如下图所示,通过配置文件来加载的 ClassPathXmlApplicationContext 是在构造方法中调用了其父类的 refresh 方法,这个方法就是核心,就是大家都知道的 AbstractApplicationContext.refresh() 。

Spring中的refresh方法怎么用

3 refresh 核心方法

关于源码的阅读,因其复杂的文件结构,在梳理其结构时,需要抓大放小,不宜深入细节,否则就容易迷路,不记得来时的路了。下图便是核心方法 AbstractApplicationContext.refresh

Spring中的refresh方法怎么用

对于 refresh 方法主要分为以下核心的 12 个方法:

  • prepareRefresh() 刷新前的预处理,调用 initPropertySources() 方法初始化一些属性设置,调用 getEnvironment().validateRequiredProperties() 校验属性的合法性,设置 earlyApplicationEvents= new LinkedHashSet() 保存容器中较早期的事件。

  • obtainFreshBeanFactory() 获取 BeanFactory,创建一个刷新的 Bean 工厂,refreshBeanFactory() 并设置容器 ID,然后将创建的 DefaultListableBeanFactory 的对象进行返回。

  • prepareBeanFactory(beanFactory) BeanFactory 的预准备工作,设置 BeanFactory 的类加载器和表达式解析器,并添加 BeanPostProcessor【ApplicationContextAwareProcessor】,设置自动装配的接口,添加 BeanPostProcessor。

  • postProcessBeanFactory(beanFactory) BeanFactory 准备工作完成后进行的后置处理工作,子类通过重写这个方法来做进一步的设置。

  • invokeBeanFactoryPostProcessors(beanFactory) 执行 BeanFactoryPostProcessor 和 BeanFactory 方法的后置处理器。在 BeanFactory 标准初始化之后执行 BeanFactoryPostProcessor 和 BeanDefinitionReGIStryPostProcessor。先执行 BeanDefinitionRegistryPostProcessor.postProcessBeanDefinitionRegistry 方法,按照 PriorityOrdered 、Ordered 和其它未设置优先级来执行,然后按照同样的优先级来执行 BeanFactoryPostProcessor.postProcessBeanFactory 方法。

  • registerBeanPostProcessors(beanFactory) 注册 BeanPostProcessor(Bean 的后置处理器),不同接口类型的 BeanPostProcessor 在 Bean 创建前后的执行时机是不一样的。

  • initMessageSource() 初始化 MessageSource 组件, 做国际化功能、消息绑定、消息解析等。

  • initApplicationEventMulticaster() 初始化事件派发器,如果容器中没有事件派发器,那么就创建一个 SimpleApplicationEventMulticaster 并添加到容器中。

  • onRefresh() 留给子容器(子类),例如在 springboot 中,用来创建 tomcat、jetty 容器并启动。

  • 10 registerListeners() 给容器中将所有项目里面的 ApplicationListener 注册进来,并将监听器注册到事件派发器中。

  • 11 finishBeanFactoryInitialization(beanFactory) 初始化所有剩下的单实例 bean,这个方法是核心方法,在后续的主要流程中会详细讲解。

  • 12 finishRefresh()完成 BeanFactory 的初始化创建工作,ioc 容器就创建完成。

到此,关于“Spring中的refresh方法怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Spring中的refresh方法怎么用

本文链接: https://www.lsjlt.com/news/328651.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring中的refresh方法怎么用
    这篇文章主要介绍“Spring中的refresh方法怎么用”,在日常操作中,相信很多人在Spring中的refresh方法怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring中的refresh方法...
    99+
    2023-06-30
  • Spring中refresh()方法有什么用
    这篇文章将为大家详细讲解有关Spring中refresh()方法有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题...
    99+
    2023-05-30
    spring
  • Spring中的refresh方法分析
    目录1 前言2 源码入口哪里找3 refresh 核心方法4 总结1 前言 在项目开发和面试过程中 spring 都是非常重要的,在前文中已经讲述了Spring&...
    99+
    2022-11-13
  • Spring容器初始化register与refresh方法是什么
    这篇文章主要讲解了“Spring容器初始化register与refresh方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring容器初始化register与refresh方法是...
    99+
    2023-07-02
  • Spring main方法中怎么调用Dao层和Service层的方法
    本篇内容介绍了“Spring main方法中怎么调用Dao层和Service层的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2023-06-21
  • Spring中怎么注入Set方法
    Spring中怎么注入Set方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Set 方法注入新建一个空的 maven项目。导入依赖properties> ...
    99+
    2023-06-20
  • spring中redis的使用方法
    这篇文章将为大家详细讲解有关spring中redis的使用方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。spring中redis怎么用在Spring中使用RedisJ...
    99+
    2022-10-18
  • Spring中getSingleton的使用方法
    本篇内容主要讲解“Spring中getSingleton的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring中getSingleton的使用方法”吧!Spring中bean的生命...
    99+
    2023-06-20
  • 页面刷新的reload()和refresh()方法有什么不同
    reload()方法用于重新加载当前页面,它会从服务器重新加载页面资源,并丢失当前页面的任何已更改的状态。换句话说,它会重新加载整个...
    99+
    2023-09-20
    不同
  • 工厂方法在Spring框架中怎么运用
    今天小编给大家分享一下工厂方法在Spring框架中怎么运用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、BeanFact...
    99+
    2023-07-04
  • spring缓存自定义resolver的方法怎么用
    本篇内容介绍了“spring缓存自定义resolver的方法怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、概述cache-asid...
    99+
    2023-06-29
  • Spring中ApplicationContextAware的使用方法详解
    ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicat...
    99+
    2023-03-22
    Spring中ApplicationContextAware作用 Spring ApplicationContextAware
  • java的main方法中调用spring的service方式
    目录main方法调用spring的servicemain方法调用spring的dao service方法main方法调用spring的service 将业务层类配置到Spring中:...
    99+
    2022-11-12
  • 【Spring】JdbcTemplate的使用方法
    JdbcTemplate(概念和准备) 什么是 JdbcTemplate Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 准备工作 引入相关 jar 包 在 spring 配置文件配...
    99+
    2018-06-11
    【Spring】JdbcTemplate的使用方法 数据库入门 数据库基础教程 数据库 mysql
  • Spring中的使用@Async异步调用方法
    目录使用@Async异步调用方法Async简介给Spring的TaskExecutor去完成本次记录Async使用场景异步请求与异步调用的区别异步请求的实现SpringBoot中异步...
    99+
    2022-11-12
  • 使用Spring AntPathMatcher的doMatch方法
    目录AntPathMatcher的doMatch方法有4个步骤Spring的AntPathMatcher工具类用法AntPathMatcher下面是模糊匹配规则AntPathMatc...
    99+
    2022-11-12
  • Spring Boot中使用Spring Retry重试框架的操作方法
    目录Spring Retry 在SpringBoot 中的应用Maven依赖注解使用开启Retry功能注解@Retryable注解@Recover注解@CircuitBreakerR...
    99+
    2022-11-13
  • HTML中的meta标签怎么实现refresh重新定向
    小编给大家分享一下HTML中的meta标签怎么实现refresh重新定向,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   &...
    99+
    2022-10-19
  • spring中bean的初始化方法是什么
    在Spring中,bean的初始化可以通过两种方式来完成:使用@Bean注解的initMethod属性或者实现Initializin...
    99+
    2023-09-21
    spring
  • java的main方法中如何调用spring的service方式
    小编给大家分享一下java的main方法中如何调用spring的service方式,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!main方法调用spring的se...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作