网站首页 > 文章精选 正文
一、SpringMvc框架
SpringMVC实现了Web MVC设计模式,将Web层进行职责解耦。
框架特点
- 清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(formobject)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、视图解析器(view resolver)等。每一个角色都可以由一个专门的对象来实现。
- 强大而直接的配置方式:将框架类和应用程序类都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器(validator)的引用。
- 非常灵活的数据验证、格式化和数据绑定机制。
- 支持各种请求资源的映射策略,支持Restful风格。
缺点
- 重量级框架。Spring 里面包含有很多其他组件,比如数据访问、MVC、事务管理、面向切点、WebSocket 功能等,因此这么复杂的组件集中到一起就会提高学习成本。还有一方面随着你的服务越多,那么 Spring 的启动就会变得越慢。
- 构建和部署复杂。启动 Spring 的 IOC 容器,是完全要依赖于第三方的 web 服务器。自身不能启动的。
- 配置文件复杂。繁杂的XML配置。
- 集成复杂。比如我们想要使用 MyBatis 或者 MongoDB的时候,我们要做很多工作不管使用配置方式也好还是使用注解方式。
二、SpringBoot框架
Spring Boot是Spring 为了简化Spring Web开发设计的一个全新框架, 和传统的Spring MVC相比,减少了很多配置、增加了开发效率。
springboot + hibernate + mysql + redis + mq
框架特点
- 使用Spring Boot可以生成独立的微服务功能单元,将应用扩展为微服务比较方便
- 使用嵌入式的Servlet容器,无需单独打成war包,无需单独部署相应的Servlet容器
- 自动配置:去繁就简,简化开发,就是程序需要什么装配什么。比如当程序的pom文件引入了Feign的起步依赖,Spring Boot就会在程序中自动引入默认的Feign的配置Bean。
- 起步依赖:传统的开发过程中,向项目添加依赖常常会选择版本,解决版本冲突,十分耗费精力。而使用Spring Boot的起步依赖,只需要加入Spring-boot-starter-web的依赖,便会自动引入Spring MVC功能的相关依赖。
- 提供生产就绪功能,如指标,健康检查和外部配置
三、SpringCloud框架
springcloud + Zuul + Fegin + hibernate + mysql + redis + mq
框架特点
- 服务的独立部署
每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
- 服务的快速启动
拆分之后服务启动的速度必然要比拆分之前快很多,因为依赖的库少了,代码量也少了。
- 更加适合敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
- 职责专一,由专门的团队负责专门的服务
业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。
- 服务可以动态按需扩容
当某个服务的访问量较大时,我们只需要将这个服务扩容即可。
- 代码的复用
每个服务都提供 REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。
缺点:
- 分布式部署,调用的复杂性高
单体应用的时候,所有模块之前的调用都是在本地进行的,在微服务中,每个模块都是独立部署的,通过 HTTP 来进行通信,这当中会产生很多问题,比如网络问题、容错问题、调用关系等。
- 独立的数据库,分布式事务的挑战
每个微服务都有自己的数据库,这就是所谓的去中心化的数据管理。这种模式的优点在于不同的服务,可以选择适合自身业务的数据,比如订单服务可以用 MySQL、评论服务可以用Mongodb、商品搜索服务可以用 Elasticsearch。
- 测试的难度提升
服务和服务之间通过接口来交互,当接口有改变的时候,对所有的调用方都是有影响的,这时自动化测试就显得非常重要了,如果要靠人工一个个接口去测试,那工作量就太大了。这里要强调一点,就是 API 文档的管理尤为重要。
- 运维难度的提升
在采用传统的单体应用时,我们可能只需要关注一个 Tomcat 的集群、一个 MySQL 的集群就可以了,但这在微服务架构下是行不通的。当业务增加时,服务也将越来越多,服务的部署、监控将变得非常复杂,这个时候对于运维的要求就高了。
总的来说优点大过于缺点,目前看来SpringCloud是一套非常完善的分布式框架,目前很多企业开始用微服务、Spring Cloud 的优势是显而易见的。
猜你喜欢
- 2025-03-19 spring Boot必用依赖框架(springbootapplication依赖)
- 2025-03-19 Springboot集成Kafka原理(spring集成kafka的原理)
- 2025-03-19 价值32k!阿里顶级架构师深度解析SpringBoot进阶原理实战手册
- 2025-03-19 疯了!Spring 再官宣惊天大漏洞(spring.plus)
- 2025-03-19 SpringBoot、MyBatis、Vue搭建一个Java企业应用开源框架源码分享
- 2025-03-19 springboot的轻量替代框架-Solon(springboot代替ssm框架)
- 2025-03-19 Spring boot 原理,核心原理使用场景
- 2025-03-19 Erupt:开源低代码 全栈类 框架,开发后端系统利器,无商用限制
- 2025-03-19 SpringBoot接入轻量级分布式日志框架(GrayLog)
- 2025-03-19 不服不行啊!大牛确实把SpringCloud集成Dubbo给一次性讲透了
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)