Spring,SpringMVC,SpringBoot
三者的核心点不会变,IOC容器:将避免那些可能致使代码变得繁杂混乱的大量的业务/工具对象,说的更通俗一点就是由框架来帮你管理这些对象,包括它的创建,销毁等
Spring MVC是Spring的一部分
Spring 出来以后,大家觉得很好用,于是按照这种模式设计了一个 MVC框架(一些用Spring 解耦的组件),主要用于开发WEB应用和网络接口,它是Spring的一个模块,通过Dispatcher Servlet, ModelAndView 和 View Resolver,让应用开发变得很容易,一个典型的Spring MVC应用开发分为下面几步:
首先通过配置文件声明Dispatcher Servlet:
首先通过配置文件声明Dispatcher Servlet:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>com.qgd.oms.web.common.mvc.OmsDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
通过配置文件声明servlet详情,如MVC resource,data source,bean等
若需添加其它功能,如security,则需添加对应配置
我们通过增加业务代码,如controller,service,model等,最后生成war包,通过容器进行启动
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
SpringMVC流程:
1、用户发送请求到前端控制器(DispatcherServlet)。
2、前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handler)。
3、找到以后处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain)。
4、前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)。
5、处理器适配器去执行Handler。
6、处理器执行完给处理器适配器返回ModelAndView。
7、处理器适配器向前端控制器返回ModelAndView。
8、前端控制器请求视图解析器(ViewResolver)去进行视图解析。
9、视图解析器向前端控制器返回View。
10、前端控制器对视图进行渲染。
11、前端控制器向用户响应结果。
SpringMVC的启动流程
https://juejin.im/post/5b207dc86fb9a01e49294f42
Servlet生命周期:
(1)加载和实例化:当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。
(2) 初始化:实例化后,Servlet容器将调用Servlet的init()方法进行初始化(一些准备工作或资源预加载工作)。
(3)服务:初始化后,Servlet处于能响应请求的就绪状态。当接收到客户端请求时,调用service()的方法处理客户端请求,HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法。
(4)销毁:当Servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放(或回收资源)。
SpringBoot:实现自动配置,降低项目搭建的复杂度
//引入spring-boot-starter-web依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> //声明Spring Boot应用,直接写业务逻辑即可 @Controller @SpringBootApplication public class MockServerApplication { @RequestMapping("/hi") @ResponseBody String home() { return "how are you!"; } public static void main(String[] args) { SpringApplication.run(MockServerApplication.class, args); } }
你甚至都不用额外的WEB容器,直接生成jar包执行即可,因为
spring-boot-starter-web模块中包含有一个内置tomcat,可以直接提供容器使用(只需要这一个starters就可以运行一个spring应用了);基于Spring Boot,不是说原来的配置没有了,而是Spring Boot有一套默认配置,我们可以把它看做比较通用的约定,而Spring Boot遵循的也是约定优于配置原则,同时,如果你需要使用到Spring以往提供的各种复杂但功能强大的配置功能,Spring Boot一样支持。 提供的“starters”poms来简化Maven配置。
尽可能自动配置spring应用。
实际使用中:
当我们使用其他框架时,在pom文件添加相应的配置,通过maven自动导入pom中的相应依赖。在启动SpringBoot应用的时候会自动扫描Maven Dependencies下面的starter包,把相应的bean加载到我们的IOC容器中。所有的自动配置逻辑都在spring-boot-autoconfigure.jar中实现。
SpringBoot更适合构建Restful风格的接口。
通过Spring-boot拆分服务构建微服务。
Spring-boot应用可以直接打包成jar包,通过java -jar就可以运行
Spring,SpringMVC,SpringBoot三者区别?
Spring提供了核心的功能IOC,AOP,spring MVC是基于 Spring 的一个 MVC 框架,主要解决 WEB 开发的问题,因为 Spring 的配置非常复杂,各种xml,properties处理起来比较繁琐,我们也需要配置组件扫描,调度器servlet,视图解析器等。SpringBoot更像一种解决方案(是基于Spring的快速开发整合包),它使我们在使用各种框架时配置更少(在一个jar包被添加到应用程序时,我们是否可以自动配置一些bean),降低了项目搭建的难度,同时也使我们的部署变得简单,提供嵌入式容器支持,使用命令java -jar独立运行jar,在外部容器中部署时,可以选择排除依赖关系以避免潜在的jar冲突。
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/11081065.html

浙公网安备 33010602011771号