一、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. 完整执行流程
- IOC 创建对象:通过
@Configuration + @Bean手动创建RedisTemplate实例,并交给 Spring IOC 容器统一管理。 - DI 注入对象:在
MyStudentController中使用@Autowired注解,自动从 IOC 容器中获取IMyStudentService对象并注入。 - 使用对象:控制器方法中直接调用注入的服务对象方法,不需要 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:日志注解,记录删除操作。
四、完整执行流程(作业必写)
- 启动:
@SpringBootApplication启动 Spring 容器 - 创建:
@Configuration + @Bean创建 Bean(RedisTemplate) - 注入:
@Autowired注入 Service、RedisTemplate 等对象 - 路由:
@RestController + @GetMapping/@PostMapping接收前端请求 - 响应:统一返回
TableDataInfo / AjaxResult格式数据
五、测试结论
- Spring IOC 负责创建、管理、存储项目中的所有 Bean 对象
- DI 依赖注入实现模块解耦,无需手动 new 对象
- Spring MVC 注解完成 HTTP 接口开发,实现前后端数据交互
- RuoYi 整套架构完全基于 Spring 注解驱动,简洁高效
- 代码可直接运行、可移植、符合企业级工程开发规范