为什么要用Springboot?
经过前面SSM框架整合以及员工管理系统的学习,对web开发框架有了简单的认识,现在又蹦出来个Springboot?使用SSM框架挺好的,为什么要使用springboot呢?这是个很头疼的问题,为此使用Springboot之后,我将SSM和Springboot框架做个简单的对比?来体现出来他们之间的差别,尝试了解为什么使用SpringBoot。
传统项目和Springboot的区别
传统的项目:整合SSM时需要考虑各种配置文件,jar包冲突问题,整合起来非常繁琐,开发完毕的项目以war包的形式放入tomcateweb容器也就是tomcate的webapps目录中,然后tomcate启动执行。
在SSM框架的学习过程中,基本上很大一部分时间都是在学习怎么整合SpringMVC,怎么整合mybatis等,怎么整合redis,怎么整合message等,整合过程异常繁琐,各种jar包之间由于冲突问题报各种莫名奇妙的错误。而在使用各个框架的时候其难度并不大,很大的一部分时间花在了固定模式的整合上,当时为了整合SSM花了将近3天的时间,参考了网上很多的例子(网上的例子鱼龙混杂,很难有比较完美的例子能够将其每一步怎么弄说清楚,为此我专门使用了最新的spring版本,最新的springMVC版本以及最新的mybaitis版本将其整合过程做了详细的讲解,希望以后对SSM的环境搭建不在浪费大量的时间)才得以保证SSM完美的整合整合过程可以参见SSM入门实践-员工管理系统实现。实际的开发过程中使用各个框架中基本上没有什么难度,但是又必须得整合(各个框架确实很好用,能将繁琐的不必要的代码通过配置的方式得以实现,整个项目的代码结构很清晰)。
Springboot项目:
什么是Springboot?
我这边专门查阅了官方的文档定义和目标:
Spring Boot makes it easy to create stand-alone, production-grade Spring-based Applications that you can run. We take an opinionated view of the Spring platform and third-party libraries, so that you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
You can use Spring Boot to create Java applications that can be started by using java -jar or more traditional war deployments. We also provide a command line tool that runs “spring scripts”.
Our primary goals are:
Provide a radically faster and widely accessible getting-started experience for all Spring development.
Be opinionated out of the box but get out of the way quickly as requirements start to diverge from the defaults.
Provide a range of non-functional features that are common to large classes of projects (such as embedded servers, security, metrics, health checks, and externalized configuration).
Absolutely no code generation and no requirement for XML configuration.
Springboot是一个快速开发框架,能够帮助我们快速的整合各种第三方框架(通过maven依赖的方式将比较繁琐的固定包依赖关系通过maven继承的方式全部依赖起来),完全采用注解化,在使用Springboot的过程中基本上没有使用过XML,以简化XML的配置,其内置HTTP服务器(tomcate,jetty),默认嵌入的是tomcate服务器,最终以Java应用程序进行执行,当然也可以部署为传统的war包。
SpringBoot框架包含内容:
关于Springboot的微服务?网上大家都说的的很多,说Springboot是一个微服务架构?关于什么是微服务这个我目前还没有很好的理解,这个貌似Springboot和微服务没有多大关系,Springboot和微服务有关系,但应该不是微服务框架,真正的微服务在Springcloud中体现。
微服务通信技术是HTTP+Json(restful)格式的轻量级的传输,而Springboot的web组件默认集成了SpringMVC,既然SpringBoot默认集成的组件是SpringMVC。
关于Springboot的学习本身框架,因为其本身比较简单,因为其本身就是一个快速集成框架。其核心就是能够快速的帮我们快速的整合第三方框架。
SpringBoot的核心原理
1:将第三方jar包通过maven继承的方式将常用的依赖关系帮助我们封装好了,只要引入一个依赖就可以了。
2:在Springboot中是没有web.xml的,那么怎么给tomcate运行的呢?
通过前面的学习即SSM入门实践,我们了解到tomcate启动时会加载web.xml以加载spring和启动springmvc。
但是SpringBoot启动SpringMVC的时候是没有传统的配置文件的(Springmvc-config.xml),以及web.xml,是如何启动的呢?
SpringBoot完全采用注解化,并且在Spring3.0之后可以采用注解方式启动SpringMVC(也就是使用注解启动SpringMVC),Springboot中内置嵌入Http服务器,可以使用Java来创建tomcate,然后使用tomcate的类加载器加载target目录中的classes,一旦遇到@EnableWebMVC这样的注解时将会去启动SpringMVC。整个过程也就是使用Java代码来启动SpringMVC。
SpringBoot和SpringCloud的关系(区别)?
前面有提到Springcloud?又是一个新名字。
那么为什么要用SpringBoot而不使用SpringCloud呢?
这里对这两个的关系捋一捋。
SpringBoot:上文已经提到过,springboot其实是一个快速开发框架,能够帮助我们快速整合第三方常用框架(也就是说Springboot不是说将任何的框架都给整合起来了,比如说Springmvc,mybatis,redis,rabbitMQ等,在github上能够排的上名的矿建基本上都被整合进去了,但不代表你写的框架SpringBoot就会整合的,只有当达到一定量的时候Springboot才会考虑整合),完全采用注解化来简化XML配置,最终是以java应用程序进行执行。
SpringCloud:是一套目前完整的微服务框架,微服务里面遇到的各种问题,SpringCloud都可以帮你解决,功能非常强大,例如注册中心、客户端调用工具、服务治理(负载均衡、断路器、分布式配置中心、网关、服务链路),里面东西非常多,后续再了解。
上文说过微服务通信技术是HTTP+Json(restful)格式的轻量级的传输,而Springboot的web组件默认集成了SpringMVC,既然SpringBoot默认集成的组件是SpringMVC,SpringCloud依赖于SpringBoot实现微服务,使用SpringMVC编写微服务接口。因此Springboot不是微服务框架,可以这么理解SpringBoot+SpringCloud是微服务。
使用Springboot的目的只是实现快速开发。
总结:
如果项目中只是单纯的集成SpringBoot其目的是实现快速开发,快速整合各种框架用
微服务开发:会涉及RPC远程通讯技术、服务治理等
SpringBoot与SpringMVC的关系
SpringBoot中的web组件集成了SpringMVC框架,使用Java来启动SpringMVC。
附录简单SpringBoot学习示例
主要讲解Http部分内容以及文件上传下载内容,下载地址
https://download.csdn.net/download/caoshangfeidie000/10670762