SpringMVC 和 SpringBoot 都是基于Spring的,两者推出的时间相差不大,只不过是SpringMVC推出早点。

关于两者,最近看到一个比较通俗的讲法:

  Spring 最初利用“工厂模式”(DI)和“代理模式”(AOP)解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC框架(一些用Spring 解耦的组件),用开发 web 应用( SpringMVC )。

  然后,发现每次开发都写很多样板代码,为了简化工作流程,于是开发出了一些“懒人整合包”(starter),这套就是 Spring Boot。

使用过SSM( SpringMVC+Spring+Mybatis ) ,就会知道需要自己配置不少文件,有点麻烦;

但Spring Boot 不同,实现了自动配置,约定优于配置,简化了spring的配置流程,降低了项目搭建的复杂度。

SSM :Tomcat启动项目,需要配置前端控制器、数据库连接、spring核心配置等等一些文件。

SpringBoot:项目启动Tomcat,只需要配置一两个properties文件就可以了。

  两者都是基于Spring的,那Springboot是如何减少配置文件、实现自动配置的呢???

  实现核心:使用JavaConfig配置方式 和 容器管理 。

  在Java里面,一切皆对象。JavaConfig配置,就是通过bean创建或实现、添加属性,从而实现相关的配置。目前,JavaConfig配置方式在逐步取代xml配置方式。另外,容器也是一种对象。

实现自动配置大致可分为几个模块:

  1、new Tomcat() ,设置相关属性值 。

  2、写一个 WebApplicationInitializer 接口的实现类(Servlet规范会自动加载指定接口的所有实现类,WebApplicationInitializer就是其中一个接口)。WebApplicationInitializer可以看做是Web.xml的替代。通过实现WebApplicationInitializer,在其中可以添加servlet,listener等,在加载Web项目的时候会加载这个接口实现类,从而起到web.xml相同的作用。

  3、加载实例化 ApplicationContext , 从而创建管理Bean (Bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean处理)。

  4、创建初始化 DispatcherServlet 。

共同学习,共同进步,若有补充,欢迎指出,谢谢!

SpringBoot 如何实现自动配置的更多相关文章

  1. Springboot学习03-SpringMVC自动配置

    Springboot学习03-SpringMVC自动配置 前言 在SpringBoot官网对于SpringMVCde 自动配置介绍 1-原文介绍如下: Spring MVC Auto-configur ...

  2. 【玩转SpringBoot】给自动配置来个整体大揭秘

    上一篇文章中提到的条件注解,只是自动配置整体解决方案中的一个环节而已,可以说是管中窥豹. 本文就逐步擦除迷雾,让整体浮现出来,这样就会有一个宏观的认识. 除了写代码之外,还能干点什么? 提到“配置”这 ...

  3. Springboot 禁用数据库自动配置

    转载至:https://blog.csdn.net/wyw815514636/article/details/80846545 https://blog.csdn.net/knqi007/articl ...

  4. 【springboot】之自动配置原理

    使用springboot开发web应用是很方便,只需要引入相对应的GAV就可以使用对应的功能,springboot默认会帮我们配置好一些常用配置.那么springboot是怎么做到的呢?这篇文章将一步 ...

  5. SpringBoot扩展SpringMVC自动配置

    SpringBoot中自动配置了 ViewResolver(视图解析器) ContentNegotiatingViewResolver(组合所有的视图解析器) 自动配置了静态资源文件夹.静态首页.fa ...

  6. IntelliJ IDEA 2017版 SpringBoot的关闭自动配置和自定义Banner

    一.关闭自动配置 在jar包下找下边的名字    设置关闭自动配置jar    多个的时候配置       二.自定义Banner   (1)网站搜索一个图案.网址:http://patorjk.co ...

  7. SpringBoot日记——SpringMvc自动配置与扩展篇

    为了让SpringBoot保持对SpringMVC的全面支持和扩展,而且还要维持SpringBoot不写xml配置的优势,我们需要添加一些简单的配置类即可实现: 通常我们使用的最多的注解是: @Bea ...

  8. springBoot日志框架自动配置与原理

    1.日志框架 小张:开发一个大型系统: ​ 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件? ​ 2.框架来记录系统的一些运行时信息: ...

  9. SpringBoot 系列教程自动配置选择生效

    191214-SpringBoot 系列教程自动配置选择生效 写了这么久的 Spring 系列博文,发现了一个问题,之前所有的文章都是围绕的让一个东西生效:那么有没有反其道而行之的呢? 我们知道可以通 ...

  10. 【SpringBoot】SpringBoot与SpringMVC自动配置(五)

    本文介绍SpringBoot对Spring MVC自动配置,SpringBoot自动配置原理可以参考:[SpringBoot]SpringBoot配置与单元测试(二) 首先新建一个SpringBoot ...

随机推荐

  1. 如何申请阿里云免费SSL证书(可用于https网站)并下载下来

    前提条件:你要有阿里云的账号,并且要有一个域名. 注意:阿里云系统也在不断更新,界面以后可能会有稍许变化,但是原理是相通的. 具体步骤: 1.登录到阿里云后台,并选择 “SSL证书(应用安全)” 菜单 ...

  2. Origin

    1.简单的使用 http://wenku.baidu.com/link?url=K1ThI9a-Ws_Rk28K28kBEc9uNRN7k4vHV4pxfieMCaLeA4rGotRAnk8fxCUm ...

  3. poj3122 Pie (二分)

    题目链接:https://vjudge.net/problem/POJ-3122 题意:有n块饼,m+1个人,将饼均分成m+1块,求每块最大的大小. 思路:水二分,显然每块的大小与可以给多少人吃具有单 ...

  4. libmkl 学习笔记

    libmkl 学习笔记 1.libkml下载地址为: https://github.com/libkml/libkml/releases 这里下载1.3.0版本 2.编译与安装 mkdir build ...

  5. 内网和wifi同时存在

    1.注意都要用管理员身份运行 2.将以下代码编写为.bat文件,然后以管理员身份运行此文件 route delete 0.0.0.0 route delete 10.10.0.0 route dele ...

  6. Python time strptime()方法

    Python time strptime()方法 描述 Python time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组. 语法 strptime()方法语法: time ...

  7. matplotlib库绘制散点图

    假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温随时间(天)变化的某种规律? a = [11,17,16,11,12,11,12,6,6 ...

  8. 进阶Python:装饰器 全面详解

    进阶Python:装饰器 前言 前段时间我发了一篇讲解Python调试工具PySnooper的文章,在那篇文章开始一部分我简单的介绍了一下装饰器,文章发出之后有几位同学说"终于了解装饰器的用 ...

  9. package[golang]学习笔记之context

    *关于context https://talks.golang.org/2014/gotham-context.slide#29

  10. MVC4学习要点记二

    一.分页(PagedList.MVC)1.安装PagedList.MVCPM>install-package PagedList.mvc   2.控制器中使用PagedList   3.csht ...