# Spring 核心思想


<!--more-->


注意：IOC和AOP不是spring提出的，在spring之前就已经存在，只不过更偏向于理论化，spring在技

术层次把这两个思想做了⾮常好的实现（Java）

## 一、ioc

### 1.什么是ioc

IoC Inversion of Control (控制反转/反转控制)，注意它是⼀个技术思想，不是⼀个技术实现

描述的事情：Java开发领域对象的创建，管理的问题

传统开发⽅式：⽐如类A依赖于类B，往往会在类A中new⼀个B的对象

IoC思想下开发⽅式：我们不⽤⾃⼰去new对象了，⽽是由IoC容器（Spring框架）去帮助我们实例化对

象并且管理它，我们需要使⽤哪个对象，去问IoC容器要即可

我们丧失了⼀个权利（创建、管理对象的权利）,得到了⼀个福利（不⽤考虑对象的创建、管理等⼀系列

事情）

为什么叫做控制反转？

控制：指的是对象创建（实例化、管理）的权利

反转：控制权交给外部环境了（spring框架、IoC容器）

![img](https://img.zhaojq.top/20260727184927889.png "img")

### 2.解决了什么问题

IoC解决对象之间的耦合问题

### 3.ioc和di的区别

ioc和di描述的是同一件事情，只不过角度不同

Ioc:对象的角度，指实现化及管理权交给了容器

di:容器的角度，容器会把对象依赖的对象注入

## 二、aop

### 1.什么是aop

AOP: Aspect oriented Programming ⾯向切⾯编程/⾯向⽅⾯编程

AOP是OOP的延续

OOP三⼤特征：封装、继承和多态

oop是⼀种垂直继承体系

### 2.aop解决什么问题

在不改变原有业务逻辑情况下，增强横切逻辑代码，根本上解耦合，避免横切逻辑代码重复

### 3.为什么叫做切面编程

「切」：指的是横切逻辑，原有业务逻辑代码我们不能动，只能操作横切逻辑代码，所以⾯向横切逻辑

「⾯」：横切逻辑代码往往要影响的是很多个⽅法，每⼀个⽅法都如同⼀个点，多个点构成⾯，有⼀个

⾯的概念在⾥⾯
























