IoC 容器

IoC 概念:2. IoC 控制反转

一、从系统盘符读取配置文件

通过 FileSystemXmlApplicationContext 可以从系统盘符的绝对路径载入配置文件。

1
ApplicationContext ctx  = new FileSystemXmlApplicationContext("D:\\applicationContext.xml")

记录一个异常

在 MacOS 下传入绝对路径:/Users/.../applicationContext.xml 时,Spring 解析 /Users 时会去掉第一个 / ,所以需要在原路径上额外加上一个 / 才能正确寻址。

正确路径: Users 前面有两个斜杠

1
FileSystemXmlApplicationContext("//Users/.../applicationContext.xml")

二、获取 bean 转类型的方式

1
2
3
4
5
6
7
8
// 方式1:获取后强转
BookDao bookDao = (BookDao) ctx.getBean("bookDao");

// 方式2:传入类型
BookDao bookDao = ctx.getDao("bookDao", BookDao.class);

// 方式3:按类型找
BookDao bookDao = ctx.getBean(BookDao.class);

三、容器类层次结构图

四、容器相关

  • BeanFactory 是 IoC 容器的顶层接口,初始化 BeanFactory 对象时,加载的 bean 延迟加载。
  • ApplicationContext 接口是 Spring 容器的核心接口,初始化时 bean 立即加载。
  • ApplicationContext 接口是提供基础 bean 操作相关方法,通过其他接口扩展其功能。
  • ApplicationContext 接口常用初始化类
    • ClassPathXmlApplicationContext
    • FileSystemXmlApplicationContext

五、bean 相关属性

属性 示例 释义
id bookDao bean 的 Id
name dao bookDaoImpl daoImpl bean 的别名
class cn.pangcy.dao.impl.BookDaoImpl bean 类型,静态工厂类,FactoryBean类
scope singleton 控制bean的实例数量
init-method init 生命周期初始化钩子函数
destroy-method destroy 声明周期销毁钩子函数
autowire byType 自动装配类型
factory-method getInstance bean 工厂方法,应用于静态工厂或实例工厂
factory-bean cn.pangcy.factory.BookDaoFactory 实例工厂 bean
lazy-init true 控制 bean 延迟加载

IoC 容器
https://blog.pangcy.cn/2023/04/05/后端编程相关/java/spring/IoC 容器/
作者
子洋
发布于
2023年4月5日
许可协议