完整教程:复习博客:Spring

复习博客:Spring

Spring的核心

Spring框架的核心是IOC(Inversion of Control,控制反转)AOP(Aspect-Oriented Programming,面向切面编程)

  • IOC(控制反转)

    • 概念:将对象的创建、依赖管理等传统上由程序自身控制的权力,反转给Spring容器来管理。程序不再负责对象的创建和依赖的查找,而是由容器根据配置(XML、注解或JavaConfig)来创建对象并注入其依赖。
    • 好处:降低了组件之间的耦合度,提高了代码的可测试性和可维护性。
    • 实现方式:依赖查找(Dependency Lookup)和依赖注入(Dependency Injection, DI)。依赖注入是更常用的方式,包括构造器注入、Setter注入和字段注入。
  • AOP(面向切面编程)

    • 概念通过:将应用程序中的横切关注点(如日志、事务管理、安全等)从业务逻辑中分离出来,通过“切面”的方式进行模块化。这些横切关注点能够被集中管理和重用,避免了代码的重复和散落。
    • 核心概念
      • 切面 (Aspect):横切关注点的模块化,包含通知和切入点。
      • 通知 (Advice):切面在特定连接点执行的动作,如前置通知、后置通知、环绕通知、异常通知、返回通知。
      • 连接点 (Join Point):程序执行过程中许可插入切面的点,如手段调用、异常抛出等。
      • 切入点 (Pointcut):匹配连接点的表达式,定义了通知在哪些连接点执行。
      • 目标对象 (Target Object):被一个或多个切面所通知的对象。
      • 织入 (Weaving):将切面应用到目标对象并创建新的代理对象的过程,许可在编译时、类加载时或运行时进行。
    • 实现方式:Spring AOP默认使用动态代理实现,如果目标对象完成了接口,则使用JDK动态代理;如果目标对象没有建立接口,则运用CGLIB代理。

Bean的生命周期

Spring Bean的生命周期是指一个Bean从创建到销毁的整个过程。主要步骤如下:

  1. 实例化 (Instantiation):Spring容器根据配置(XML、注解等)创建Bean的实例。
  2. 属性填充 (Populate Properties):Spring容器对Bean的属性进行依赖注入。
  3. BeanNameAware接口:如果Bean实现了BeanNameAware接口,会调用setBeanName()方法,传入Bean的ID。
  4. BeanFactoryAware接口:如果Bean实现了BeanFactoryAware接口,会调用setBeanFactory()方法,传入BeanFactory实例。
  5. ApplicationContextAware接口:如果Bean实现了ApplicationContextAware接口,会调用setApplicationContext()方法,传入ApplicationContext实例。
  6. BeanPostProcessor接口 (前置处理):如果Bean实现了BeanPostProcessor接口,会调用postProcessBeforeInitialization()方法。
  7. InitializingBean接口:如果Bean实现了InitializingBean接口,会调用afterPropertiesSet()方法。
  8. 自定义init方法:如果Bean配置了init-method属性,会调用指定的初始化方法。
  9. BeanPostProcessor接口 (后置处理):如果Bean实现了BeanPostProcessor接口,会调用postProcessAfterInitialization()方法。
  10. 利用中 (In Use):Bean已准备就绪,可以被应用程序利用。
  11. DisposableBean接口:如果Bean实现了DisposableBean接口,会调用destroy()方法。
  12. 自定义destroy方法:如果Bean配置了destroy-method属性,会调用指定的销毁方法。

Spring MVC的工作流程

Spring MVC是Spring框架的一个模块,用于构建Web应用程序。其工作流程如下:

  1. 客户端发送请求:用户向服务器发送HTTP请求。
  2. DispatcherServlet接收请求DispatcherServlet(前端控制器)是Spring MVC的核心,负责接收所有请求。
  3. HandlerMapping查找处理器DispatcherServlet根据请求URL,通过HandlerMapping查找能够处理该请求的Handler(处理器,通常是Controller中的方法)。
  4. HandlerAdapter执行处理器DispatcherServlet找到Handler后,通过HandlerAdapter执行HandlerHandler执行完成后,返回一个ModelAndView对象。
  5. ViewResolver解析视图DispatcherServletModelAndView交给ViewResolver(视图解析器),ViewResolver根据逻辑视图名解析出真正的视图(如JSP页面、HTML页面)。
  6. 视图渲染:视图渲染器将模型信息填充到视图中,生成最终的响应内容。
  7. 响应客户端DispatcherServlet将生成的响应返回给客户端。
posted @ 2025-08-11 19:08  yfceshi  阅读(7)  评论(0)    收藏  举报