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 。

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

最新文章

  1. java 随机获取国内IP
  2. iOS常用设计模式笔记
  3. CSS的应用
  4. VS2015中GLAUX库的链接问题
  5. java中的传值与传引用
  6. 解析Tomcat内部结构和请求过程
  7. php使用openssl来实现RSA(非对称加密)
  8. Spring MVC 使用拦截器优雅地实现权限验证功能
  9. 找回mysql数据库密码
  10. npm install express -g出错
  11. MongoDB 安装与启动
  12. java线程同步问题
  13. jquery 操作listbox 左右相互选择
  14. 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题
  15. APP为什么需要着陆页
  16. MongoDb 入门教程
  17. C++类中静态变量和普通变量的区别
  18. jenkins定位GitLab推送的最新Webhook中push event来自哪一个分支
  19. Vivado怎么使用In system debug(类似于chipscope的东西)
  20. mysql 8.0 ~ 索引优化

热门文章

  1. k8s 工具集
  2. C语言递归之对称二叉树
  3. 模型蒸馏(Distil)及mnist实践
  4. Guava源码阅读-io-Files
  5. 3道入门字典树例题,以及模板【HDU1251/HDU1305/HDU1671】
  6. 【3.3】mysql中的Federated存储引擎,远程表,相当于sql server的linked server
  7. IDEA连接 Oracle数据库
  8. Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
  9. Linux就该这么学——新手必须掌握的命令之系统状态检测命令组
  10. date和time