news 2026/5/1 14:39:28

RuoYi 中 Spring IOC/DI 与 Spring MVC 注解实战分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RuoYi 中 Spring IOC/DI 与 Spring MVC 注解实战分析

一、Spring 环境启动(核心入口)

RuoYi 的 Spring 全容器启动依靠以下代码:

代码位置

ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java

作用说明:

  • @SpringBootApplication:开启 Spring Boot 自动配置、包扫描、Bean 装载
  • SpringApplication.run():启动 IOC 容器,加载所有 Bean
  • 这是整个项目 Spring 环境的唯一入口

二、Spring IOC/DI 自定义类型创建与注入

1. IOC:使用 @Configuration + @Bean 注册自定义 Bean

RuoYi 大量使用配置类手动创建 Bean,比@Component更灵活。

代码位置

ruoyi-framework/src/main/java/com/ruoyi/framework/config/RedisConfig.java

注解与作用解析
注解 / 代码作用说明
@Configuration标记这是 Spring 配置类,启动时会被自动扫描
@EnableCaching开启 Spring 缓存支持,为 Redis 做准备
@Bean告诉 Spring,把redisTemplate()方法返回的对象,创建并放入 IOC 容器
RedisTemplate配置自定义 Redis 序列化规则(用 FastJSON),避免乱码

2. DI:@Autowired 注入 IOC 容器中的 Bean

文件路径ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/MyStudentController.java

这是 Spring DI(依赖注入)的典型用法。通过@Autowired注解,Spring 会自动从 IOC 容器中找到IMyStudentService的实例并注入,Controller 层无需手动创建对象,直接调用myStudentService就能执行业务逻辑。

3. 完整执行流程

  1. IOC 创建对象:通过@Configuration + @Bean手动创建RedisTemplate实例,并交给 Spring IOC 容器统一管理。
  2. DI 注入对象:在MyStudentController中使用@Autowired注解,自动从 IOC 容器中获取IMyStudentService对象并注入。
  3. 使用对象:控制器方法中直接调用注入的服务对象方法,不需要 new 对象、不需要初始化,完全由 Spring 管理生命周期。

三、Spring MVC 注解

1. 控制类定义:@RestController + 统一前缀

文件路径ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/MyStudentController.java

1.@RestController

  • 表示这是一个Spring MVC 控制器
  • 会把返回值自动转成 JSON 格式
  • 把当前类交给 Spring 管理

2.@RequestMapping("/system/student")

  • 设置整个模块的统一接口前缀
  • 所有接口都会以/system/student开头

2. 列表查询:@GetMapping + 分页 AOP

文件路径ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/MyStudentController.java

注解与作用:

  • @GetMapping("/list"):Spring MVC 注解,处理 GET 请求,访问地址/system/student/list
  • startPage():若依框架自带分页方法,底层是 AOP 实现
  • 返回 TableDataInfo:统一封装分页数据,前后端分离标准格式

3. 新增:@PostMapping + @RequestBody

文件路径ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/MyStudentController.java

注解作用说明:

  • @PostMapping:Spring MVC 注解,用于处理 POST 请求,实现新增功能。
  • @RequestBody:接收前端传递的 JSON 数据,并自动将其绑定到MyStudent对象上。
  • @PreAuthorize:若依框架的权限控制注解,确保只有拥有system:student:add权限的用户才能调用此接口。
  • @Log:日志注解,记录用户的新增操作,便于后续审计。

4. 删除:@DeleteMapping + 路径参数

文件路径ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/MyStudentController.java

注解作用说明:

  • @DeleteMapping("/{ids}"):Spring MVC 注解,用于处理 DELETE 请求,实现删除功能。/{ids}表示这是一个路径参数。
  • @PathVariable Long[] ids:接收 URL 路径中的ids参数,并绑定为 Long 数组,支持批量删除。
  • @PreAuthorize:权限控制,确保只有拥有system:student:remove权限的用户才能调用。
  • @Log:日志注解,记录删除操作。

四、完整执行流程(作业必写)

  1. 启动@SpringBootApplication启动 Spring 容器
  2. 创建@Configuration + @Bean创建 Bean(RedisTemplate)
  3. 注入@Autowired注入 Service、RedisTemplate 等对象
  4. 路由@RestController + @GetMapping/@PostMapping接收前端请求
  5. 响应:统一返回TableDataInfo / AjaxResult格式数据

五、测试结论

  • Spring IOC 负责创建、管理、存储项目中的所有 Bean 对象
  • DI 依赖注入实现模块解耦,无需手动 new 对象
  • Spring MVC 注解完成 HTTP 接口开发,实现前后端数据交互
  • RuoYi 整套架构完全基于 Spring 注解驱动,简洁高效
  • 代码可直接运行、可移植、符合企业级工程开发规范
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 14:39:28

3分钟掌握XGP存档提取:实现游戏进度无损迁移的终极指南

3分钟掌握XGP存档提取:实现游戏进度无损迁移的终极指南 【免费下载链接】XGP-save-extractor Python script to extract savefiles out of Xbox Game Pass for PC games 项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor 你是否曾因Xbox Gam…

作者头像 李华
网站建设 2026/5/1 14:38:46

ViGEmBus内核驱动架构解析:Windows虚拟游戏控制器深度指南

ViGEmBus内核驱动架构解析:Windows虚拟游戏控制器深度指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款基于Windows内核模式驱…

作者头像 李华
网站建设 2026/5/1 14:37:23

基于MCP协议的AI智能体邮件自动化工具mcp-mail实战指南

1. 项目概述:一个为AI智能体打造的邮件操作工具箱最近在折腾AI智能体(Agent)的开发,发现一个挺普遍的需求:让智能体能够自动处理邮件。无论是自动回复客户咨询、整理会议纪要,,还是根据邮件内容…

作者头像 李华
网站建设 2026/5/1 14:36:58

零膨胀泊松回归怎么做:SPSSAU软件操作步骤与结果解读

一、零膨胀泊松回归所属模块零膨胀泊松回归在SPSSAU中属于【计量经济研究】模块。二、方法概述零膨胀泊松回归主要用于处理零值很多的计数型数据,尤其适合结果变量中“0”明显偏多的研究场景。它既能分析零值出现的可能性,也能分析非零计数部分的变化规律…

作者头像 李华
网站建设 2026/5/1 14:35:44

UE5多人游戏开发避坑:手把手教你用C++搞定Steam会话创建(附蓝图调用)

UE5多人游戏开发实战:C与Steam会话创建的深度解析 在虚幻引擎5的多人游戏开发中,会话管理是连接玩家的核心桥梁。许多开发者在初次接触Steam会话创建时,往往会被各种回调、委托和平台特定设置搞得晕头转向。本文将带你深入UE5的多人游戏会话系…

作者头像 李华
网站建设 2026/5/1 14:35:34

【仅限首批读者】Laravel 12.2未公开变更:AI Prompt模板引擎废弃Twig改用Blade Compiler AST重写——旧项目迁移必做4项静态扫描+2个宏注册补丁

更多请点击: https://intelliparadigm.com 第一章:Laravel 12 AI集成避坑指南的演进背景与核心挑战 随着 Laravel 12 引入原生 PHP 8.3 支持、改进的生命周期钩子(如 booted 和 booting 的语义强化)、更严格的依赖注入约束&#…

作者头像 李华