官网链接:https://spring.io/
一、IoC控制反转
-
IoC
控制反转,全称Inverse of Control
,是一种设计理念 - 由代理人来创建与管理对象,消费者通过代理人来获取对象
-
IoC
的目的是降低对象之间的直接耦合
二、DI依赖注入
-
IoC
是设计理念,是现代程序设计遵循的标准,是宏观目标 -
DI(Dependency Injection)
是具体技术实现,是微观目标 -
DI
在Java
中利用反射
技术实现对象注入(Injection
) -
依赖注入是指运行时将容器内对象利用
反射
赋给其他对象的操作 -
1.基于 setter 方法注入对象
-
2.基于构造方法注入对象
三、Spring
1、所谓
IoC
就是将我们对象的控制权由程序本身转嫁给一个第三方,这个第三方通过一个容器统一的对我们系统中的对象进行管理,这就是IoC
的理念。如果放在具体的实现上需要怎么做呢?在Java
中有一个大名鼎鼎的框架体系,就是Spring
,Spring
的根本目的就像它们官网描述的Spring makes Java simple
。
2、IoC
容器是Spring
生态的地基,用于统一创建与管理对象依赖。(可以说没有IoC
就没有Spring
生态)
1、Spring介绍
(1)含义
-
Spring
可从狭义与广义两个角度看待 - 狭义的
Spring
是指Spring
框架(Spring Framework
) - 广义的
Spring
是指Spring
生态体系
(2)狭义的Spring框架
-
Spring
框架是企业开发复杂性的一站式
解决方案 -
Spring
框架的核心是IoC容器
与AOP面向切面编程
-
Spring IoC
负责创建与管理系统对象,并在此基础上扩展功能
(3)广义的Spring框架
-
Microservices
分布式微服务 -
Reactive
响应式编程 -
Cloud
云端技术 -
Web apps
web 应用程序开发(工作中最常用) -
Serverless
无服务器编程 -
Event Driven
事件驱动 -
Batch
批处理
(4)Spring IoC容器职责
- 对象的控制权交由
第三方
统一管理(IoC控制反转) - 利用Java
反射
技术实现运行时
对象创建与关联(DI依赖注入) - 基于配置提高应用程序的可维护性与扩展性
2、初始化IoC容器
- 基于
XML
配置Bean
- 基于注解配置
Bean
- 基于
Java
代码配置Bean
3、Spring AOP
- Spring AOP - Aspect Oriented Programming 面向切面编程
- AOP的做法是将
通用、与业务无关
的功能抽象封装为切面类
- 切面可配置在目标方法的执行前、后运行,真正做到即插即用(可插拔组件)
Spring AOP最终目的就是在不修改源码的情况下对程序行为进行扩展
注解 | 说明 |
---|---|
Aspect | 切面,具体的可插拔组件功能类,通常一个切面只实现一个通用功能 |
Target Class/Method | 目标类、目标方法,指真正要执行与业务相关的方法 |
PointCut | 切入点,使用 execution表达式说明切面要作用在系统的哪些类上 |
JoinPoint | 连接点,切面运行过程中,是包含了目标类/方法元数据的对象 |
Advice | 通知,说明具体的切面的执行时机,Spring包含了五中不同类型的通知 |
Spring AOP实现原理
- Spring 基于
代理模式
实现功能动态扩展,包含两种形式 - 目标类拥有接口,通过JDK动态代理实现功能扩展
- 目标类没有接口,通过CGLib组件实现功能扩展
网友评论