我正在学习 Spring Core 认证,对于 Spring 如何处理 豆类的生命周期,特别是 豆后处理机豆后处理机,我有一些疑问。
所以我有这样一个模式:
对我来说,这意味着什么非常清楚:
在 LoadBean 定义阶段采取了以下步骤:
处理 @ 配置类和/或 @ 组件类 扫描和/或解析 XML 文件
添加到 BeanFactory 的 Bean 定义(每个都在其 id 下进行索引)
调用了特殊的 BeanFactory 后处理器 bean,它可以修改任何 bean 的定义(例如对于属性占位符值的替换)。
然后在 Bean 创建阶段中执行以下步骤:
默认情况下,每个 bean 都被急切地实例化(按照正确的顺序创建,并注入其依赖项)。
每颗依赖注入经过后期处理 进一步配置和初始化可能发生的阶段
在后期处理之后,bean 被完全初始化并准备好使用(通过它的 id 跟踪,直到上下文被销毁)
好的,这对我来说很清楚,我也知道 有两种类型的 bean 后处理程序是:
初始化器: 初始化 bean,如果指示的话(例如@PostConstruction)。
和 其他的:,允许额外的配置和 可以在初始化步骤之前或之后运行
我发布了这张幻灯片:
所以对我来说,什么是 初始化程序 bean 后期处理器是非常清楚的(它们是带有 @ PostConstruction注释的方法,在 setter 方法之后会立即自动调用(在依赖注入之后) ,我知道我可以用它来执行一些初始化批处理(就像在前面的例子中填充缓存一样)。
但是什么确切地表示另一个 bean 后处理程序呢?当我们说这些步骤是执行 在初始化阶段之前或之后时,我们的意思是什么?
因此,我的 bean 被实例化,它的依赖项被注入,然后初始化阶段就完成了(通过执行带有 @ PostConstruction注释的方法)。我们说在初始化阶段之前使用 Bean 后处理器是什么意思?这意味着它发生在 @ PostConstruction带注释的方法执行之前?这是否意味着它可能发生在依赖注入之前(在调用 setter 方法之前) ?
我们说执行 在初始化步骤之后到底是什么意思。这意味着它发生在执行 @ PostConstruction带注释的方法之后,还是什么?
我可以很容易地想到为什么我需要一个 @ PostConstruction注释的方法,但我不能指出其他类型的 bean 后处理器的一些典型例子,你能给我一些什么时候使用的典型例子吗?