网站首页 > 文章精选 正文
Spring Cloud 是基于Spring Boot框架提供的一系列的微服务的解决方案集合,有配置中心、服务注册、负载均衡等等。这些开发都是在Spring Boot的基础上进行封装。从这个角度上来看Spring Boot可以看做Spring Cloud的基础。
那么到底什么是Spring Boot 呢?
首先Spring Boot是一个基于Spring来开发出来的Spring生态下的快速开发解决方案,在Spring 框架中讲究的是约定大于配置。所以其实如果想要深入的了解关于Spring Boot的东西,就先得花点时间研究一下Spring 相关的内容,这个博主也会在后期的分享内容中进行分享。
Spring Boot的起源
首先聊一下关于Spring的东西,在很早之前很多公司在JavaEE的标准下通过EJB容器作为主要的企业级软件开发方案,当时EJB作为Java企业级开发的内容。
EJB提供了一种组件模式,开发人员只需要关注业务,而不需要关注具体的底层实现,例如远程调用、事务管理等,但是随之而来的问题就是EJB的侵入式太强了,导致整个系统的使用效率极低。就迫使开发者考虑一下怎么开发一个新的解决方案。
之前的分享中提到过Spring 组织,只有在发现这个东西没有可以替代的解决方案的时候才会考虑自研新的内容。所以就出现了Java EE企业级解决方案Spring 框架。
Spring 框架是一个轻量级的框架,主要的目的就是简化JavaEE企业应用开发,为了实现这个目的,主要采用了两种技术IOC 和AOP。经过不断的发展,Spring 对在JavaEE开发中的常用的技术进行一个合理的封装整合,让其能快速的适应企业级开发的解决方案。例如出现的Spring MVC是替代Struts2的解决方案,Spring 整合 Mybatis代替了Hibernate框架等等的内容。
Spring IOC/DI
IOC(Inversion of Control)和DI(Dependency Injection)全称分别是控制反转和依赖注入,怎么理解这里两个概念呢?
IOC
IOC(控制反转),实际上就是把对象的生命周期委托给Spring容器来管理,而反转的意思就是获取对象的方式被反转了,从给的模式到拿的模式。
也就是说,当对象托管到Spring 的容器中,客户端在使用该对象的时候,就不需要在通过New的方式来创建对象,直接可以从容器中对需要的内容进行获取使用就可以了。如下图所示。
DI
DI(Dependency Inject),依赖注入。简单的理解就是容器在运行期间,通过动态的方式把某种依赖关系注入到组件中。
实现依赖注入的方式有三种
- 接口注入
- 构造方法注入
- setter方法注入
Bean 装配方式的升级
基于XML配置的方式能很好的完成对于生命周期的描述和管理,但随着项目的不断增大,XML配置的方式也就越来越多,对应的配置文件也就越来越多,这样整个的配置文件的管理就会使得项目维护成本不断的增加。另外随着业务关系的复杂化,配置文件的依赖关系也会变复杂,所以为了解决这个问题 Spring从2.x开始,提供了可以通过注解的方式来对Bean进行声明和注入,也就是可以通过配置类的方式进行注入,减少了配置文件的XML的数量。所以就出现了两种声音,到底是Spring注解配置类的方式好还是通过XML配置文件的方式好。
从Spring 3.x 开始提供了Java配置类的方式,它可以完全的取代XML配置文件,通过Java代码的方式来完成Bean对象的注入操作。
从XML到@Configuration的改变,是开发效率的提升。同时也是支持了新的解决方案Spring Boot的诞生。
Spring Boot的价值
SpringBoot并不是一个新的技术架构,而是通过封装的方式来简化Spring 应用的开发方式,开发者只需要通过少量的代码就可以创建一个产品级的Spring 因公。这也印证了Spring的约定优于配置的核心思想。
如何理解约定优于配置的思想?
约定配置是一种软件设计的规范,目的就是减少配置的数量,提升开发效率。并不是一种新的思想。
在Spring Boot 中,约定优于配置的思想主要体现在如下的方面
- Maven 目录结构的约定
- Spring Boot 默认的配置的约定
- Spring MVC 的依赖
- 对于Starter组件自动配置
Spring Boot的核心
- starter 组件,提供了开箱即用的解决方案
- 自动装配,可以通过上下文环境自动完成Bean的装配
- Actuator Spring Boot应用监控
- Spring Boot CLI 用于命令行快速构建应用
猜你喜欢
- 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)