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 注解驱动,简洁高效
  • 代码可直接运行、可移植、符合企业级工程开发规范
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值