Spring随笔

Posted by whaler404 on February 20, 2024

Spring随笔

Spring 体系结构

IoC 容器

  • BeanFactory

  • ApplicationContext

  • Bean 定义

    • Bean 和 Spring 容器的关系

    • 配置元数据

      • xml
      • 注解
      • Java
  • Bean 作用域

    • singleton:单例
    • prototype:每次从容器中 getBean 相当于 new XxxBean()
    • request:每次 HTTP 请求创建一个 Bean,只适用于 WebApplicationContext
    • session:同一个 Session 共享一个 Bean,只适用于 WebApplicationContex
  • Bean 生命周期:定义->初始化->使用->销毁
    • 初始化回调
    • 销毁回调
  • Bean 后置处理器

  • Bean 定义继承:创建 Bean 定义模板,父类 Bean 不能被实例化,被标记为 abstract=true

依赖注入

核心功能:管理 Bean 之间的依赖关系

依赖注入(DI,也称为布线),将类粘合在一起,同时类之间保持独立

  • 基于构造函数的 DI

    • 向一个对象传递引用,使用 ref 属性,直接传递值,使用 value 属性
  • 基于设值函数的 DI

    • 使用 <bean> 标签的 <property> 属性,将 ref 引用注入依赖对象 name

Beans 自动装配

  • 自动装配 byName

  • 自动装配 byType

  • 构造函数的自动装配

基于注解的配置

  • @Required

  • @Autowired

    • 直接应用于字段最为常用,但是从构造方法注入在代码层面更好
    • 还可以添加到该类型数组的字段,容器的字段,方法
  • @Qualifier

    • 对于多个相同类型的 Bean,只为其中一个进行装配
    • 配合 @Autowired 使用,需要编写 xml 配置文件
  • @Qualifier

  • JSR-250 注解

    • @PostInit@PreDestroy
    • @Resource
  • 基于Java的配置

    • @Configure 注解类表示该类可以使用 Spring IOC 容器作为 Bean 定义的来源
      • 需要 jre,jdk8 一下有jre
    • @Bean 注解告诉 Spring,注解方法将返回一个 Bean 对象
    • @Import 注解允许从另一个配置类中加载 @Bean 定义
    • 还有 @Scope 等注解可以代替 xml 中的属性
    • 用于替代基于 xml 的配置
  • 事件处理

    • ApplicationContext 会发布某些类型的事件
    • ApplicationEvent 类和 ApplicationListener 接口提供在 ApplicationContext 中处理事件
    • 如果一个 Bean 实现 ApplicationListener,每次 ApplicationEvent 被发布到 ApplicationContext上,会通知 Bean
    • 标准事件:Context 被初始化或刷新,启动,停止,关闭,请求被服务
    • Spring 事件处理是单线程的,所有接收者收到消息前一直阻塞
    • 监听上下文

AOP

  • 基于 xml 的 AOP 配置

  • 基于 @Aspect 的 AOP 配置

    • @Aspect 注解声明 切面
    • @Pointcut(execution(* com.*.*(..))) 注解声明 切入点
    • @Before(pointcut = "") 声明 方法

JDBC 框架

事务管理

WebMVC 框架