第一章、概述
1、SPring是什么?
1、框架:是程序的半成品,帮我们实现了一半
2、开源:开发源代码
3、轻量级:体积小、不需要依赖其他组件
4、Spring是一款主流的javaEE轻量级开源框架
5、目的:简化java企业级应用的开发难度和开发周期
6、不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度,任何java应用也可以在Spring受益
7、Spring成为了javaEE的代名词
2、Spring的狭义和广义的划分
1、广义上
1、Spring泛指以Spring Framework为核心的Spring技术栈
2、经过十多年的发展,Spring不是一个单纯的应用框架了,而是发展有一个或多个不同子项目(模块)组成的成熟技术。
3、Spring Framework是其他子项目的基础
2、狭义上
1、狭义的Spring就是特指Spring Framework,我们通常将它成为Spring框架
2、Spring框架是一个分层的、面向切面的java应用程序的一站式轻量级解决方案。是Spring技术栈的核心和基础,为了解决企业级应用开发的复杂性而创建的
1、两个核心模块
1、loC和AOP
2、loC控制反转
1、是指把创建对象过程交给Spring进行管理
3、AOP面向切片编程
1、用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度
2、AOP还解决一些系统层面上的问题,日志、事务、权限
3、Spring Framework特点
1、非侵入式
1、程序本身小,对领域模型做到零污染
2、对功能性组件也只要几个注解进行标记,不破坏原有的结构,反而还能简化组件结构
2、控制反转
1、反转资源获取方向。把自己创建资源、像环境索取资源,变成环境将资源准备好,我们享受注入过程(例如对象的创建,Spring中会创建好对象,我们使用就行)
3、面向切片编程
1、在不修改源代码的基础上增强代码功能
4、容器
1、SpringIOC是一个容器, 它包含并管理组件对象,的生命周期。
2、组件享受了容器化管理替程序员屏蔽组件创建过程中的大量细节,极大的降低了使用门槛,提高开发效率
5、组件化
1、就是实现了用简单的组件配置,组合成一个复杂的应用。
2、Spring可以用xml和java类和注解,组合这些对象。使我们可以基于一个个功能明确。
3、组件是可以复用的java对象
4、组件是对象,对象不一定能是组件
6、一站式
1、在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且Spring旗下的项目已经覆盖广泛
2、很多方面的功能性需求可以在Spring Framework的基础上全部使用Spring来实现
4、Spring模块组成
1、图示

2、内容
上图中包含了 Spring 框架的所有模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选择性地使用所需要的模块。下面分别对这些模块的作用进行简单介绍。
1、Spring Core(核心容器)
spring core提供了IOC,DI,Bean配置装载创建的核心实现。核心概念: Beans、BeanFactory、BeanDefinitions、ApplicationContext。
-
spring-core :IOC和DI的基本实现
-
spring-beans:BeanFactory和Bean的装配管理(BeanFactory)
-
spring-context:Spring context上下文,即IOC容器(AppliactionContext)
-
spring-expression:spring表达式语言
2、Spring AOP**
- spring-aop:面向切面编程的应用模块,整合ASM,CGLib,JDK Proxy
- spring-aspects:集成AspectJ,AOP应用框架
- spring-instrument:动态Class Loading模块
3、Spring Data Access**
- spring-jdbc:spring对JDBC的封装,用于简化jdbc操作
- spring-orm:java对象与数据库数据的映射框架
- spring-oxm:对象与xml文件的映射框架
- spring-jms: Spring对Java Message Service(java消息服务)的封装,用于服务之间相互通信
- spring-tx:spring jdbc事务管理
4、Spring Web
- spring-web:最基础的web支持,建立于spring-context之上,通过servlet或listener来初始化IOC容器
- spring-webmvc:实现web mvc
- spring-websocket:与前端的全双工通信协议
- spring-webflux:Spring 5.0提供的,用于取代传统java servlet,非阻塞式Reactive Web框架,异步,非阻塞,事件驱动的服务
5、Spring Message
- Spring-messaging:spring 4.0提供的,为Spring集成一些基础的报文传送服务
6、Spring test
- spring-test:集成测试支持,主要是对junit的封装
5、Spring6特点
1、版本要求
1、jdk版本要求是jdk17
2、idea用2022.3月份的
3、spring用6.0.2