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 帮你加上横切功能(日志、事务等),让业务代码更干净。

相关推荐
方也_arkling1 小时前
【Java-Day08】static / final / 枚举
java·开发语言
橙淮1 小时前
Spring Bean作用域与生命周期全解析
java·spring
风吹夏回1 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
Chengbei111 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1121 小时前
web-第一次课后作业
java·开发语言·idea
小熊Coding1 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋92 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本2 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
xiaoshuaishuai82 小时前
C# 内存管理与资源泄漏
开发语言·c#
DIY源码阁2 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse