Spring的两大核心

1.控制反转(IoC,Inversion of Control)

复制代码
# Spring 框架的两大核心
​
Spring 框架的两大核心是 **控制反转(IoC)** 和 **面向切面编程(AOP)**,通俗易懂地解释如下:
​
---
​
**通俗理解**:  
你不用自己去创建对象或管理依赖了,Spring 帮你自动安排好谁用谁。
​
**比喻**:  
就像你去餐厅点餐,不用自己去厨房做菜,厨师(Spring)帮你准备好了。
​
**实际作用**:
​
- 以前的写法:
```java
Car car = new Car();
Engine engine = new Engine();
car.setEngine(engine);
  • 使用 Spring IoC:
复制代码
@Component
public class Car {
    @Autowired
    private Engine engine;
}

Spring 自动帮你把 Engine 注入到 Car,无需手动创建。


2.面向切面编程(AOP,Aspect-Oriented Programming)

通俗理解: 把"公共逻辑"独立出来,自动帮你在程序运行的某些地方加上。

比喻: 就像你在衣服上加口袋或拉链,衣服本身不用改太多,就能有新功能。

实际作用

  • 典型场景:日志记录、事务管理、权限检查。

  • 以前写法:

复制代码
public void doSomething() {
    log.info("开始方法");
    // 业务逻辑
    log.info("结束方法");
}
  • 使用 AOP:
复制代码
@Aspect
@Component
public class LoggingAspect {
    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore() {
        log.info("方法开始");
    }
​
    @After("execution(* com.example.service.*.*(..))")
    public void logAfter() {
        log.info("方法结束");
    }
}

Spring 自动在方法执行前后加日志,业务代码干净简洁。


3.IoC 与 AOP 的示意图

复制代码
          +---------------------+
          |       Spring        |
          |  (IoC 容器管理对象) |
          +---------------------+
                   |
          +---------------------+
          |       业务对象       |
          |     (Car, Engine)    |
          +---------------------+
                   ^
                   |
          +---------------------+
          |       AOP 切面       |
          | (日志/事务/权限等)   |
          +---------------------+
  • IoC:帮你管理对象和依赖

  • AOP:帮你在方法执行前后加上额外功能(切面)


总结

  • IoC:Spring 帮你管理对象和依赖,让你专注业务逻辑。

  • AOP:Spring 帮你加上横切功能(日志、事务等),让业务代码更干净。

相关推荐
唐青枫18 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马20 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户37215742613520 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户37215742613520 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454751 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜2 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫2 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq2 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
plainGeekDev2 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
糖拌西瓜皮2 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js