春天的故事:Spring框架的入门级知识

欢迎关注微信公众号:互联网全栈架构

现在,几乎所有的Java程序开发都会用到Spring框架,伴随着Spring的广泛应用和技术本身的不断演进,又衍生出了很多相关的框架,比如Spring Boot,Spring Cloud等等,免不了让人眼花缭乱,本文就试图介绍Spring的基本知识,以及这些流行的Spring框架(套件)之间的关系。

一、Spring是什么

以上是官网关于最新版Spring的定义,略显晦涩难懂,很"官方"。通俗一点讲,Spring是一个开源的J2EE应用程序框架,为企业级应用的开发提供了一个轻量级的解决方案,它使得Java开发变得简单、快速、安全。Spring的两大核心支柱是IoC和AOP,IoC是Inversion of Control,控制反转,简单来讲就是把对象的创建交由Spring容器来统一管理;AOP是Aspect Oriented Programming,面向切面编程,它可以将程序中通用的非业务性的通用代码封装成一个切面,然后注入到目标对象中。Spring框架有如下优点:

  • 低侵入式设计,对代码的污染极低;

  • AOP可以将一些通用功能进行集中处理,比如安全、日志、事务等;

  • 方便集成其它框架;

  • 对象的管理由容器统一来进行,大大降低耦合性;

  • 方便进行程序的测试等等。

Spring包含了核心容器,数据访问/集成,AOP,WEB,消息,测试等:

Spring模块图

二、Spring Boot

Spring具备很多优点,让它成为了世界上最流行的Java框架(来自官网),然而,Spring本身有个比较大的问题就是配置太过于繁琐,且非常容易出错,各种XML文件让人眼花缭乱,遥想当年因为手动引入项目的依赖包,由于版本问题导致OOM,且问题极难发现,真是苦不堪言。

在这样的背景下,Spring Boot应运而生,相对Spring框架本身来讲,它具有如下特点:

  • 采用约定大于配置的思想,可以快速开发java应用;

  • 简化Spring的XML配置;

  • 提供内置的Web容器(Tomcat、Jetty),便于部署和管理;

  • 独特的Starter机制,大大简化程序的配置;

  • 提供了运行监测、健康检查等功能。

记得初次使用Spring Boot的时候,简便、快速开发、功能强大这些特点让人眼前一亮,用一个英语单词来形容就是Shock,有点震惊了。

三、Spring Cloud

Spring Boot非常适合于企业级应用的快速开发,但在微服务治理体系中,除了微服务本身的功能外,还需要服务治理、监控等相关的配套功能,而Spring Cloud正是为了解决此类问题而产生的。Spring Cloud为开发人员提供了一整套的快速构建分布式系统所需的工具,比如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁等等。

四、Spring Cloud Alibaba

Spring Cloud Alibaba是Spring Cloud下面的一个子项目,致力于提供分布式服务开发的一站式解决方案。此项目包含开发分布式服务的必需组件,方便开发者通过 Spring Cloud 编程模型,轻松使用这些组件来开发分布式应用服务。

依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。它提供了如下功能:

  • 流量控制和服务降级

  • 服务注册与发现

  • 分布式配置管理

  • RPC服务,主要是适配Dubbo

  • 事件驱动

  • 分布式事务

  • 接入阿里相关产品,比如OSS,SchedulerX等

五、总结

Spring是基于Java的开源框架,两大核心支柱IoC和AOP让它大杀四方,流利度甚广,然而,Spring中的XML配置繁琐及极易出错,再加上微服务的推广使用,Spring Boot框架便应运而生,它功能强大且开发效率极高,但它也只能用于微服务本身的应用开发,对于微服务必需的服务发现、治理等等功能却无能为力,Spring Cloud基于Spring Boot,加上其它的配套框架,就解决了微服务治理的相关问题。而Spring Cloud Alibaba是Spring Cloud的一个子项目,它基于Spring Cloud的开发模式和规范,接入了阿里巴巴相关的一些中间件,提供一站式的微服务开发解决方案。

以上就是关于Spring的知识介绍,以及相关的Spring框架和技术栈之间的关系,后续会推出更多关于Spring相关的入门案例、源码解析、自定义实现等文章,敬请关注。

都看到这里了,请帮忙一键三连啊,也就是点击文末的在看、点赞、分享,这样会让我的文章让更多人看到,也会大大地激励我进行更多的输出,谢谢!

鸣谢:

https://spring.io/

推荐阅读:

责无旁贷:超酷的责任链模式<>

聚沙成塔:聊聊建造者模式<>

公司裁员,码农竟然成了"帮凶"?(剧情杜撰)

MySQL如何进行表之间的关联更新<>

高频面试题:多线程顺序打印ABC字符20次<>

一网打尽:MySQL索引失效的场景大搜罗

相关推荐
lastHertz1 天前
Golang 项目中使用 Swagger
开发语言·后端·golang
渣哥1 天前
面试高频:Spring 事务传播行为的核心价值是什么?
javascript·后端·面试
调试人生的显微镜1 天前
iOS 代上架实战指南,从账号管理到使用 开心上架 上传IPA的完整流程
后端
本就一无所有 何惧重新开始1 天前
Redis技术应用
java·数据库·spring boot·redis·后端·缓存
低音钢琴1 天前
【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解
java·spring boot·后端
越千年1 天前
用Go实现类似WinGet风格彩色进度条
后端
蓝色汪洋1 天前
string字符集
java·开发语言
卿言卿语1 天前
CC1-二叉树的最小深度
java·数据结构·算法·leetcode·职场和发展
淳朴小学生1 天前
静态代理和动态代理
后端
=>>漫反射=>>1 天前
配置的前世今生:从逻辑中抽离,又与逻辑有限融合
java·设计规范