目录
- Spring简述
- Spring起源
- Spring技术核心
- 1. Spring IoC
- 2. Spring AOP
- 3. Spring Framework
- 4. Spring Boot
- Spring涉及领域
Spring简述
如果想快速上手spring开发的话这边先给出spring的官方文档
官方教程:spring.io guides
中文教程(官方镜像):6.x版本Spring 中文网
快速搭建SpringBoot环境链接(Spring公司认为jdk17以上的版本是未来发展的方向,因此官网提供的快速搭建已经不支持jdk17以下的开发环境
)
Spring起源
- Spring框架可追溯到2002年,当时由Spring之父Rod Johnson撰写了一本《Expert One-on-One J2EE Design and Development》的书,此书介绍了一些关于简化企业级开发设计项目的实践以及设计模式,打破了传统Java开发的思维模式,在这之后Rod Johnson推翻了自己的理论,并提出了一个新的设计框架Spring。
- 在官方文档的叙述中,Spring是为简化J2EE开发从传统的J2EE中精心挑选个别规范进行整合,是对J2EE的补充。
如今的Spring6.0以及之后的框架已经不在支持传统的javax包,转为Jakarta EE 9规范(Servlet 5.0+ JPA3.0+)和Tomcat 10.1,Jetty 11与Undertow 2.3 web服务器,Hibernate ORM 6.1兼容
Spring技术核心
最关键的技术核心就两个IoC与AOP,至于有多关键,官方文档里是着重强调的那种关键。
1. Spring IoC
- IoC又称控制反转Inversion of Control:对象仅通过构造参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在其上设置的属性来定义其依赖关系(即它们与之合作的其他对象)。然后容器在创建 bean 时注入这些依赖关系。这个过程从根本上说是Bean本身通过使用直接构建类或诸如服务定位模式的机制来控制其依赖关系的实例化或位置的逆过程(因此被称为控制反转)。
这里简单点说是分为两部分。
- 1.1 Spring Container关联对象特定创建的方式上设置的属性,为其定义依赖关系。
- 1.2 在Spring Container创建bean(这里只要是由Spring生产的对象统称为bean)的时候注入依赖关系,换句话说就是不需要你自己在对已经注入Spring Container的类new对象了,全权交由Spring容器。
如果看不懂的话可以先去学习用法,在实践中体会这种抽象概念。
2. Spring AOP
- aop-面相切面编程
- 面向切面的编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象的编程(OOP)。OOP中模块化的关键单位是类,而AOP中模块化的单位是切面。切面使跨越多种类型和对象的关注点(如事务管理)模块化。(这样的关注点在AOP文献中通常被称为 “交叉(crosscutting)” 关注点)。
- Spring框架的核心原则之一是非侵入性,Spring AOP的功能是在不改动每个模块|切面的代码基础上能额外增加新的功能。
- Spring AOP默认使用标准的JDK动态代理进行AOP代理,因此基本上任意接口都可以被aop代理。
3. Spring Framework
-
Spring的底层架构,是Spring框架的核心,其中就包含了上面IoC与AOP的核心技术,此外,它还提供了对事务管理、对象/关系映射、JavaBeans、JDBC、JMS 和其他技术的支持,从而确保高效开发。
-
Spring Framework官方介绍文档
-
目前Spring Framwork的最新发行版本为6.1.4,但因为不支持jdk17以下的版本,目前国内大多还是停留在jdk8(长期维护的jdk版本目前就8,11,17,21,其中jdk8是维护到2030年,11是2026年,17是2029,21是2031)因此大多依然是用5.x版本的Spring进行开发,目前最后一版的5.3.x版本官方Commercial support到2026年年底。
4. Spring Boot
- Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。
Spring涉及领域
- Spring最初是以Spring Framework起家,在J2EE开发中大展身手,随着软硬件技术的发展,如今Spring也在对不断变化的市场需求做出积极的响应与更新,从技术广度上来说Spring基本上整合了绝大部分当今主流的开发框架,从技术深度上来说Spring同时也有非常庞大的开发社区,非常多的学习文档,从web底层到微服务,云计算,基本上全部包含在内。