我们要学习springBoot之前,需要了解什么是spring?
- Spring是一个开源框架,它由Rod Johnson创建,是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,它是为了解决企业应用开发的复杂性而创建的。
- Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
目的
:解决企业应用开发的复杂性。
功能
:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。
范围
:任何Java应用。- Spring的核心是:
控制反转(IoC)
和面向切面编程(AOP)
。什么是IOC、AOP这里就不做详细说明了,感兴趣的朋友可以自行去查找;- Spring提供对持久层(Persistence)、事物(Transcation)的支持。
- Spring供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装。
- Spring提供了对现存的各种框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。
总之,Spring是一个全方位的应用程序框架。
- 使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
- 可以提供众多服务,事务管理,WS等。
- AOP的很好支持,方便面向切面编程。
- 对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等
- Spring DI机制降低了业务对象替换的复杂性。
- Spring属于低侵入,代码污染极低。
- Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。
所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。
除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
1.jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
2.Spring不支持分布式,这也是EJB仍然在用的原因之一。
为了解决上述spring的缺点问题,所以springBoot就出现了。
SpringBoot对上述Spring的缺点进行的改善和优化,基于
约定优于配置
的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。
Spring Boot 是由 Pivotal 团队提供的全新框架,2014 年 4 月发布 Spring Boot 1.0 2018 年 3 月 Spring Boot 2.0发布。它是对spring的进一步封装,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。怎么简化的呢?就是通过封装、抽象、提供默认配置等方式让我们更容易使用。
SpringBoot 基于 Spring 开发。SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
springBoot具有以下特点:
- 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
- 内嵌Tomcat或Jetty等Servlet容器,应用无需打成WAR包
- 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置
- 大量的自动配置,简化开发,也可修改默认值
- 无需配置XML,无代码生成,开箱即用
- 提供准备好的特性,如指标、健康检查和外部化配置
开箱即用(Outofbox)
在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑
约定优于配置(Convention over configuration)
由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化
简单来讲,springBoot就是为了优化spring框架开发的,它自动的封装了一些配置和功能,只需要简单的引入几个starter依赖就可以快速的创建一个spring项目,让开发人员从spring配置中解放出来,更加注重业务和功能的开发。
参考:
https://www.jianshu.com/p/24add3c5fedb
https://www.cnblogs.com/mooba/p/11753086.html