从零开始学java - 第二十九天

94 阅读2分钟

这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战

今天继续spring~

Spring的核心机制

管理Bean

  • 程序通过Spring访问容器中的Bean,最常用的接口为ApplicationContext,该接口有两个实现类:
    • ClassPathXmlApplicationContext - 从类加载路径下搜索配置文件,并根据配置文件来创建Spring容器
    • FileSystemXmlApplicationContext - 从文件系统的相对路径或绝对路径下去搜索配置文件,并根据配置文件来创建Spring容器 ps:Spring Bean是被实例的,组装的及被Spring容器管理的Java对象

依赖注入

  • Spring框架的核心功能:
    • Spring负责创建和管理所有的Java对象,这些Java对象被称作Bean
    • Spring处理Bean之间的依赖关系,处理的方式是“依赖注入”
  • 在传统的模式中,当某个Java对象需要调用另一个Java对象时,总是主动去获取的,这非常不利于项目升级的维护,但是依赖注入可以将主动转变为被动,调用者只需要接收Spring为调用者的成员变量赋值即可
  • 设值注入 - 指IoC容器通过成员变量的setter方法来注入被依赖对象。这种注入方式简单直观,因此在Spring的依赖注入里大量使用
  • 构造注入 - 利用构造器来设置依赖关系的方式,驱动Spring在底层以反射方式执行带指定参数的构造器,当执行带参数的构造器时,就可利用构造器参数对成员变量执行初始化
  • 两种方式对比:
    • 设值注入:
      • 程序人员更容易理解
      • 对于复杂的依赖关系,构造注入会过于臃肿
      • 在某些成员变量可选的情况下,多参数的构造器更加笨重
    • 构造注入:
      • 构造注入可以在构造器中决定依赖关系的注入顺序
      • 对于依赖关系无需变化的Bean,构造注入因为没有setter方法,所有的依赖关系都在构造器内设定,所以无需担心后续的代码对依赖关系产生破坏
      • 依赖关系只能在构造器中设定,则只有组件的创建者才能改变组件的依赖关系 今天就学到这里,晚安~