本文从几个阶段向您介绍如何理解Spring的工作过程。内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。
Spring框架非常强大,完全理解Spring非常困难。
为了理解Spring是如何工作的,让我们研究一下Spring是如何加载的。春天会经历几个阶段。
从Javaweb的角度,我们把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