Spring 和 Spring MVC 技术笔记

image

一、Spring 核心概念

1. Spring 简介

Spring 是一个开源的 Java 企业级应用框架,提供了全面的基础设施支持,使开发者能够专注于业务逻辑的开发。

核心优势

  • 控制反转(IoC)容器
  • 面向切面编程(AOP)
  • 声明式事务管理
  • 丰富的企业级集成
  • 简化开发,提高生产力

2. Spring 模块架构

Spring 框架由多个模块组成,主要包括:

模块 描述
Spring Core 核心容器,提供 IoC 功能
Spring AOP 面向切面编程支持
Spring Context 应用上下文,提供企业级功能
Spring JDBC 简化 JDBC 操作
Spring TX 事务管理
Spring Web Web 应用支持
Spring MVC MVC 框架
Spring Test 测试支持

image

二、Spring IoC 容器

1. IoC 概念

控制反转(Inversion of Control):将对象的创建、依赖关系的管理等控制权从应用代码转移到容器。

依赖注入(Dependency Injection):IoC 的实现方式,通过构造器、setter 方法或字段注入依赖。

2. 核心容器接口

接口 描述
BeanFactory 基础容器接口,延迟加载
ApplicationContext 高级容器接口,立即加载,提供更多企业级功能
WebApplicationContext Web 环境下的应用上下文

3. Bean 定义方式

3.1 注解配置

@Component
public class UserService {
    @Autowired
    private UserDao userDao;
}

@Component
public class UserDaoImpl implements UserDao {
}

image

三、Spring AOP

1. AOP 概念

面向切面编程(Aspect-Oriented Programming):将横切关注点(如日志、事务、安全)与业务逻辑分离。

核心术语

  • Aspect(切面):横切关注点的模块化
  • Join Point(连接点):程序执行的特定点
  • Advice(通知):切面在特定连接点执行的动作
  • Pointcut(切入点):匹配连接点的表达式
  • Weaving(织入):将切面应用到目标对象的过程

2. 通知类型

通知类型 描述
Before 方法执行前
After 方法执行后(无论是否异常)
AfterReturning 方法正常返回后
AfterThrowing 方法抛出异常后
Around 方法执行前后(可控制方法执行)

3. 实现方式

3.1 注解方式

@Aspect
@Component
public class LogAspect {
    @Pointcut("execution(* com.example.service.*.*(..))")
    public void serviceMethods() {}
    
    @Before("serviceMethods()")
    public void beforeAdvice(JoinPoint joinPoint) {
        System.out.println("方法执行前:" + joinPoint.getSignature().getName());
    }
    
    @Around("serviceMethods()")
    public Object aroundAdvice(ProceedingJoinPoint pjp) throws Throwable {
        long start = System.currentTimeMillis();
        Object result = pjp.proceed();
        long end = System.currentTimeMillis();
        System.out.println("方法执行时间:" + (end - start) + "ms");
        return result;
    }
}

image

四、Spring MVC 架构

1. MVC 设计模式

MVC(Model-View-Controller):将应用分为三个部分:

  • Model:数据模型,包含业务逻辑
  • View:视图,展示数据
  • Controller:控制器,处理请求,协调 Model 和 View

2. Spring MVC 架构

核心组件

  • DispatcherServlet:前端控制器,处理所有请求
  • HandlerMapping:映射请求到处理器
  • Controller:处理器,处理请求
  • ModelAndView:模型和视图
  • ViewResolver:解析视图

请求处理流程

  1. 客户端发送请求到 DispatcherServlet
  2. DispatcherServlet 通过 HandlerMapping 找到对应的 Controller
  3. Controller 处理请求,返回 ModelAndView
  4. DispatcherServlet 通过 ViewResolver 解析视图
  5. 渲染视图,返回响应给客户端

五、Spring MVC 核心组件

1. Controller

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    
    @GetMapping("/list")
    public String list(Model model) {
        List<User> users = userService.findAll();
        model.addAttribute("users", users);
        return "user/list";
    }
    
    @PostMapping("/add")
    public String add(User user) {
        userService.add(user);
        return "redirect:/user/list";
    }
}

2. 常用注解

注解 描述
@Controller 标记控制器类
@RestController 标记 REST 控制器(@Controller + @ResponseBody)
@RequestMapping 映射请求路径
@GetMapping 映射 GET 请求
@PostMapping 映射 POST 请求
@PutMapping 映射 PUT 请求
@DeleteMapping 映射 DELETE 请求
@PathVariable 获取路径参数
@RequestParam 获取请求参数
@RequestBody 获取请求体
@ResponseBody 返回 JSON 响应
@ModelAttribute 绑定请求参数到模型
posted on 2026-01-28 20:44  关羽飞  阅读(0)  评论(0)    收藏  举报