Spring&SpringMVC基础学习

约 9 分钟读完

🧩 一、什么是 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 + 数据库等,简化配置

← Spring Boot & Spring Cloud入门 JSP基础入门与安全 →