Spring&SpringMVC基础学习
🧩 一、什么是 Spring?
✅ 1. 概念:
Spring 是一个轻量级的 Java 企业级开发框架,最初为了解决企业级开发中的复杂性(如耦合高、开发慢),由 Rod Johnson 于 2003 年发布。
Spring 的核心理念是“控制反转(IoC)” 和 “面向切面编程(AOP)”。
🔧 2. Spring 的核心模块(最常用的几个):
| 模块 | 作用 |
|---|---|
| Spring Core(IoC) | 控制反转(依赖注入)容器的核心 |
| Spring AOP | 面向切面编程,例如日志、事务、权限等横切逻辑 |
| Spring Context | 上下文支持,类似于高级 BeanFactory |
| Spring JDBC / ORM | 简化数据库开发 |
| Spring Transaction | 声明式事务管理 |
| Spring Web(Spring MVC) | 支持 Web 开发,是 MVC 框架的一部分 |
🎯 3. 核心特性(总结)
| 特性 | 说明 |
|---|---|
| IoC(控制反转) | 框架控制对象的创建和生命周期,开发者只需声明 |
| DI(依赖注入) | 把对象之间的依赖关系交给 Spring 自动注入 |
| AOP(面向切面) | 实现日志、事务、安全等横切逻辑 |
| 声明式事务管理 | 用注解或 XML 管理事务 |
| 模块化 | 可按需使用模块,如 Web、JDBC、Security 等 |
✍ 示例代码(IoC + 注解注入):
@Component
public class UserService {
public void sayHello() {
System.out.println("Hello, Spring!");
}
}
@Configuration
@ComponentScan("com.example")
public class AppConfig {}
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
UserService userService = ctx.getBean(UserService.class);
userService.sayHello();
}
}🧱 二、什么是 Spring MVC?
✅ 1. 概念:
Spring MVC 是 Spring Framework 的一部分,用于构建 Web 应用程序的 MVC 框架(Model-View-Controller 模式)。
它使开发者能以清晰的层次结构编写控制器逻辑、路由映射、数据模型和视图渲染。
🌐 2. 核心结构(MVC 分层)
| 层 | 描述 |
|---|---|
| Model(模型) | 封装业务数据(POJO、DTO) |
| View(视图) | 展示数据,JSP、Thymeleaf、Freemarker 等 |
| Controller(控制器) | 接收请求、调用服务层、返回视图/JSON |
⚙️ 3. 请求处理流程(核心组件)
Client Request → DispatcherServlet(前端控制器)
↓
HandlerMapping(找到对应的控制器)
↓
Controller(处理请求)
↓
ViewResolver(视图解析器)
↓
响应返回客户端✅ 4. 注解开发(常用注解)
| 注解 | 用途 |
|---|---|
@Controller |
标识控制器类 |
@RequestMapping |
映射请求路径 |
@GetMapping / @PostMapping |
映射 GET/POST 请求 |
@ResponseBody |
将返回值直接作为响应体 |
@RestController |
等同于 @Controller + @ResponseBody |
@RequestParam |
获取 URL 参数 |
@PathVariable |
获取路径中的参数 |
@ModelAttribute |
绑定表单参数到对象 |
@RequestBody |
接收 JSON 数据 |
✍ 示例代码:
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable int id) {
return new User(id, "Tom");
}
@PostMapping("/add")
public String addUser(@RequestBody User user) {
// 假装保存逻辑
return "用户添加成功:" + user.getName();
}
}🔄 三、Spring 与 Spring MVC 的关系
| 对比点 | Spring | Spring MVC |
|---|---|---|
| 类型 | 通用开发框架 | 专注于 Web 层 |
| 功能 | 控制反转、事务、数据访问、AOP | 请求处理、路由、视图解析 |
| 依赖 | 是 Spring MVC 的基础 | 依赖 Spring 核心容器 |
| 使用范围 | 可用于任何 Java 项目 | 专用于 Web 应用(基于 Servlet) |
| Bean 管理 | 管理所有组件 | 主要用于控制器层和 Web 组件 |
你可以这样理解:
Spring 是地基,Spring MVC 是搭建在上面的 Web 构建模块。
📦 四、Spring 项目常见结构(Spring MVC)
src/
└── com.example
├── controller # 控制器层(Spring MVC)
├── service # 业务逻辑层(Spring Bean)
├── dao # 数据访问层
├── model # 实体类
└── config # Spring 配置类
resources/
├── templates/ # 视图层(JSP、Thymeleaf)
└── application.properties🚀 五、现代项目发展:Spring Boot
由于 Spring + Spring MVC 配置复杂(XML、繁琐 Bean 声明等),官方后来推出了:
Spring Boot:一个快速构建 Spring 应用的开发框架。
它整合了 Spring、Spring MVC、Spring Data 等模块,并通过“自动配置”、“约定优于配置”大大简化开发。
🧠 总结一句话:
| 框架 | 一句话描述 |
|---|---|
| Spring | 用来管理 Bean,控制依赖关系,实现 AOP 等 |
| Spring MVC | 用来处理 Web 请求的 MVC 框架,控制器层实现 |
| Spring Boot | 用来快速集成 Spring + MVC + 数据库等,简化配置 |