当前位置: 首页 > news >正文

Spring 中的 IOC

🌱 一、什么是 IOC?

📖 定义(通俗理解):

IOC(Inversion of Control,控制反转) 是一种设计思想:对象不再由你自己创建和管理,而是交给 Spring 容器来“注入”。

🧠 打个比喻:

以前你是老板,项目里要用什么对象你就自己 new 一个,比如:

UserService userService = new UserService();

用了 IOC 之后,你把这个“雇人干活”的工作交给了 Spring,自己就专心做业务逻辑,Spring 帮你创建并注入对象:

@Autowired
private UserService userService;

👉 你不控制对象的创建,而是“被动”接收对象——这就是控制的“反转”。

🔧 二、Spring 是怎么实现 IOC 的?

Spring 提供了 IOC 容器,即 ApplicationContext。这个容器负责:

  1. 扫描配置(XML 或 注解)
  2. 创建对象(Bean)
  3. 注入依赖
  4. 管理生命周期

常见注解方式:

@Component
public class UserService {
    public void hello() {
        System.out.println("Hello from UserService");
    }
}

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/hi")
    public String sayHi() {
        userService.hello();
        return "Hi";
    }
}

解释:

  • @Component:告诉 Spring,这个类要被托管
  • @Autowired:让 Spring 把 UserService 的实例注入进来
  • Spring 启动时会创建这些 Bean 并放进 IOC 容器中

🧩 三、IOC 容器的两大实现类

容器类简介
BeanFactory轻量级,延迟加载,适合资源有限环境
ApplicationContext功能强大,默认加载所有 Bean,常用

🚀 四、IOC 带来了什么好处?

优势说明
解耦合类与类之间不再直接依赖
更易于维护和测试可以轻松替换实现类或 mock
可配置性强通过配置文件或注解灵活管理对象
方便扩展可通过 AOP 织入功能,如日志、权限控制等

💬 五、一句话总结:

IOC 是 Spring 的核心理念,它让对象之间的依赖关系从“主动创建”变成了“自动注入”,从而实现了松耦合和模块化开发。

相关文章:

  • Unet网络的Pytorch实现和matlab实现
  • 洛谷每日1题-------Day37__P1634 禽兽的传染病
  • Xorg 内存上涨的根源探究
  • 存储引擎 / 事务 / 索引
  • 实操(多线程特点、健壮性降低、缺乏访问控制)Linux
  • Django和Celery实现的异步任务案例
  • 小学诗词大会竞赛活动实施方案
  • Qwen-Agent框架的文件相关操作:从Assistant到BasicDocQA
  • 《比特城传奇:公钥、私钥与网络安全的守护之战》
  • 【Mac 从 0 到 1 保姆级配置教程 11】- Mac 基础配置 Finder、触控板、常用快捷键等
  • 数据库访问工具 dbVisitor v6.0.0 发布
  • 从零实现本地大模型RAG部署
  • PostgreSQL 16深度解析(从16.0-16.8)
  • 正则表达式 - 简介
  • 【算法】堆排序
  • jeecg拦截器 排除地址不让他拦截
  • 使用傅里叶级数和Python表示方波
  • 深度解析新能源汽车研发测试中的关键信号采集技术
  • Qt实现鼠标拖动窗口
  • Java 基础-32-枚举-枚举的应用场景
  • 山东济南建网站公司/域名注册
  • 开发网站类型/微网站
  • 门户网站 管理系统/跨境电商培训机构哪个靠谱
  • 做网站需要注意的/广告关键词排名
  • 衡水企业做网站推广/广告营销
  • 比较个性的网站/西安优化seo