怎么从Spring的几个阶段理解其工作过程

技术怎么从Spring的几个阶段理解其工作过程这篇文章给大家介绍怎么从Spring的几个阶段理解其工作过程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Spring框架非常强大,想要彻底弄懂Spri

本文从几个阶段向您介绍如何理解Spring的工作过程。内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。

Spring框架非常强大,完全理解Spring非常困难。

为了理解Spring是如何工作的,让我们研究一下Spring是如何加载的。春天会经历几个阶段。

从Javaweb的角度,我们把Spring分成几个阶段进行分析,从而加深对Spring的理解。

Spring的运行大致可以分为三个阶段:配置阶段、初始化阶段和运行时阶段。

让我们通过下图来看看Spring的几个阶段。

怎么从Spring的几个阶段理解其工作过程

配置阶段

让我们以JavaWeb项目为例。创建Spring项目时,如果要启动项目,首先要做什么?必须先配置它。

首先,我们将找到web.xml文件,并将Spring容器和请求分发器的配置引入到web.xml中,因为web.xml是整个web项目的入口。

listener listener-class org . spring framework . web . context . context loaderlistener/listener context-param param-name contextconfiglocation/param-name param-value class path : spring . XML,class path : spring-my batis . XML/param-value/context-param servlet servlet-namesprinmvc/servlet-name servlet-class org . spring framework . web . servlet . dispatchervlet/servlet-class init-param-name

初始化阶段

夜还年轻,星星已经落了,爱情也落了。

配置完成后,项目启动时,web容器会自动调用servlet的初始化方法。ContextLoaderListener将从指定的配置文件中读取配置信息,初始化并加载待加载到Spring IOC容器中的bean,并对引入@ autowritten注释或通过配置文件声明依赖关系的bean进行依赖注入和自动组装。然后将初始化HandlerMapping,带有@Controller注释的bean将通过ResultMapping注释的值绑定到方法名,并执行URL映射。

@ controller @ request mapping('/info ')publicationenfocontroller {/* * *按信息类型查找公共信息*@paraminfoType信息类型* @ return */@ request mapping(' Find infobytype ')@ responsebodypublicatmapstring,ObjectselectByInfoType(StringinfoType){//.返回结果;}}

例如:

让我们看看上面的控制器类。首先,用@Controller和@ResultMapping('/info ')对该类进行注释。selectByInfoType()方法上有一个@ resultmapping(“/find infobytype”)注释。

因此,当Spring初始化时,注释扫描器将扫描该类(在注释的情况下),发现该类具有@ResultMapping(“/info”)注释,然后扫描该类下所有带有@ ResultMapping()注释的方法。下面的代码显示了selectByInfoType()方法将被映射到HandlerMapping。

handler mapping . put('/info/find infobytype ',' infocontroller . selectbyinfotype(StringinfoType)');

运行阶段

处理URL请求,通过DispatchServlet分发器从HandlerMapping中找到对应类的方法,利用反射机制将用户的请求分发到对应Controller的对应方法进行处理,然后将处理结果返回给用户。

string method=handler mapping . get('/info/find infobytype ');//找到对应的方法后,使用反射机制调用方法。在这里,我们用图解法帮助理解Spring的工作原理,但只是做一个粗略的分析。实际的实现过程要比这复杂得多。感兴趣的同学可以阅读源代码或者查阅资料了解更多。

如何从几个阶段理解Spring的工作过程,希望在这里分享。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/131265.html

(0)

相关推荐

  • Unity3d的基础是什么

    技术Unity3d的基础是什么今天就跟大家聊聊有关Unity3d的基础是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、Unity中的坐标系是使用的左手坐标

    攻略 2021年11月11日
  • 如何用PX2对H.264进行硬编码[CODE_PX2]Encode_H264

    技术如何使用PX2硬编码H.264 [CODE_PX2]Encode_H264本篇文章给大家分享的是有关如何使用PX2硬编码H.264 [CODE_PX2]Encode_H264,小编觉得挺实用的,因此分享给大家学习,希

    攻略 2021年12月22日
  • python都应用于什么领域

    技术python都应用于什么领域这篇文章主要介绍“python都应用于什么领域”,在日常操作中,相信很多人在python都应用于什么领域问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”pyt

    攻略 2021年10月30日
  • 28Django-接入支付宝3,前置基础准备工作)

    技术28Django-接入支付宝3,前置基础准备工作) 28Django-接入支付宝3(前置基础准备工作)一,先本地跑通基础逻辑:
    点打赏按钮后,页面实现跳转
    1新创建一个项目:D:\PycharmPr

    礼包 2021年12月20日
  • sysbench 0.5有什么用

    技术sysbench 0.5有什么用这篇文章主要介绍sysbench 0.5有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 一 前言 因为在准备做压力测试方面

    攻略 2021年11月7日
  • dya 2.c++语法

    技术dya 2.c++语法 dya 2.c++语法构造函数 用途:用来初始化类对象的数据成员; 构造函数和类名相同,没有返回值,可以有多个构造函数 不同的构造函数形参数量或者类型要有所区别

    礼包 2021年12月2日