Spring框架相关知识

1.SpringMVC的执行流程

1、用户发送出请求到前端控制器DispatcherServlet,这是一个调度中心
2、DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
3、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处
理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。
4、DispatcherServlet调用HandlerAdapter(处理器适配器)。
5、HandlerAdapter经过适配调用具体的处理器(Handler/Controller)。
6、Controller执行完成返回ModelAndView对象。

7、HandlerAdapter将Controller执行结果ModelAndView返回给
DispatcherServlet。
8、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
9、ViewReslover解析后返回具体View(视图)。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图
中)。
11、DispatcherServlet响应用户。
当然现在的开发,基本都是前后端分离的开发的,并没有视图这些,一般都
是handler中使用Response直接结果返回

2.SpringBoot的启动流程 

  • 首先启动类使用了@SpringBootApplication注解,这个复合注解包括了@EnableAutoConfiguration 、@SpringBootConfiguration和@ComponentScan三个注解,@SpringBootConfiguration是标注当前类是一个配置类并注入到IOC容器中,而@ComponentScan是扫描指定路径下带有特定注解的类到IOC容器中。最为重要的是@EnableAutoConfiguration,它能通过ImportSelector选择器将所有带有@Configuration自动导入到容器里。
  • 注解完成后,通过运行SpringApplication的run方法完成服务构建、环境准备、容器创建、填充容器四项工作。
  • 服务构建需要在SpringApplication的构造器中完成①加载资源加载器、主方法类到内存中,②判定web应用类型是否存在并默认为servlet,③确定web服务器后就要加载初始化类了,这里是通过META-INFO/spring.factories来读取启动注册初始化器、应用上下文初始化器、应用监听器三类配置,当然,这里也可以对自定义三类配置,④通过运行时栈判断main方法所在的类是否为主启动类
  • 调用run方法进入环境准备阶段,主要是对容器和组件做一些前置操作。①先创建一个启动上下文。并逐一调用刚刚加载的启动注册初始化器的一个初始化方法 ②接下来设置awt.headLess=true表示缺少显示器、键盘等设备也可正常启动 ③启动运行监听器,同时发布启动事件,获取并加载spring.factories中的事件发布运行监听器,并且会将应用监听器也一并引入,以后想要在启动流程过程中加入自定义逻辑就只需要监听这些事件 ④通过prepareEnvironment方法组装启动参数,根据不同的web构造不同的环境。构造完毕后会加载环境变量、jvm系统属性到属性集合中,后期无需加载。此时可设置启动参数并添加configuration.properties到属性集合中。接下来会发布环境准备完成的事件,一些监听器收到信号会做相应处理。⑤可做忽略元数据加载、打印banner的操作。
  • 环境准备好以后,就可以创建容器了。①首先创建注解配置servlet容器,具体行为是创建beanfactory、用来解析一些注解的后置处理器和其他属性对象 ③调用prepareContext方法对容器中的属性进行初始化
  • 容器创建完毕后,就会对容器做初始化操作。这里会①创建系统自带的Bean和用户自定义Bean并装配到容器里,通过启动tomcat和经历Bean的生命周期就可以使用一个完整的Bean了 ②发布启动事件完成的同时,会回调自定义Runner接口来处理定制化需求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值