Spring、SpringBoot、SpringCloud的区别

什么是Spring

作为Java开发人员,大家都Spring都不陌生,简而言之,Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,
如:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test,这些模块缩短应用程序的开发时间,提高了应用开发的效率例如,在Java Web开发的早期阶段,我们需要编写大量的代码来将记录插入到数据库中。但是通过使用Spring JDBC模块的JDBCTemplate,我们可以将操作简化为几行代码。
spring中的两大核心:

ioc和aop

ioc(控制反转)
所谓控制反转,就是一个对象的使用不再手动创建,而是被动的被传递进来。这么做的好处在于解耦。

老的写法:

public boolean sendMsg(String msg) {
MsgServicemsgService = new MsgServiceImpl();
returnmsgService.sendMsg(msg);
}

新的写法:

@Autowired
MsgServicemsgService;
public boolean sendMsg(String msg){
returnmsgService.sendMsg(msg);
}

看起来相差不大,但IoC更加的有利于代码的解耦。使用IoC后就由老的面向对象编程变成了面向接口编程,我在使用MsgService 的时候,他的实际实现是对我屏蔽的。这对解耦、拓展、维护是一个很好的基础。我要更改sendMsg的逻辑,只需再提供一个新的该接口的实现替换上就好,其他调用的地方都无需改动。JDBC驱动其实就是这个道理,提供接口规范,各个厂家提供实现就好。

aop(面向切面编程)
AOP使开发人员更加关注主体业务的开发,一些公共的可抽象的业务比如日志、事务等,在编码时都无须额外关注。这样能更好的实现单一原则、高内聚。

什么是Spring Boot

Spring Boot基本上是Spring框架的扩展,主要是简化了大量的配置工作。以约定优于配置、开箱即用策略,提供了一个可以快速搭建应用的框架,它消除了设置Spring应用程序所需的XML配置,为更快,更高效的开发生态系统铺平了道路。

Spring Boot中的一些特征:

 (1) 创建独立的Spring应用。
(2) 嵌入式Tomcat、Jetty、 Undertow容器(无需部署war文件)。
(3)提供的starters 简化构建配置
(4)尽可能自动配置spring应用。
(5)提供生产指标,例如指标、健壮检查和外部化配置
(6)完全没有代码生成和XML配置要求

与Spring不同,Spring Boot只需要一个依赖项来启动和运行Web应用程序:

org.springframework.boot
spring-boot-starter-web
2.0.6.RELEASE

Spring Boot为不同的Spring模块提供了许多依赖项。一些最常用的是:

spring-boot-starter-data-jpa
spring-boot-starter-security
spring-boot-starter-test
spring-boot-starter-web
spring-boot-starter-thymeleaf

什么是springcloud
springcloud是一种微服务架构,SpringBoot是springcloud的基础,提供了微服务架构下的各个组件的集成序列(负载均衡、容灾、服务治理等等)

其主要优点有:
集大成者,Spring Cloud 包含了微服务架构的方方面面。
约定优于配置,基于注解,没有配置文件。
轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发。
开发灵活,Spring Cloud 的组件都是解耦的,开发人员可以灵活按需选择组件。

缺点:
项目结构复杂,每一个组件或者每一个服务都需要创建一个项目。
部署门槛高,项目部署需要配合 Docker 等容器技术进行集群部署,而要想深入了解 Docker,学习成本高。

Spring Cloud 和 Dubbo 对比:
Dubbo 只是实现了服务治理,而 Spring Cloud 实现了微服务架构的方方面面,服务治理只是其中的一个方面。下面通过一张图对其进行比较:
Spring、SpringBoot、SpringCloud的区别_第1张图片

你可能感兴趣的:(框架对比,java)