Update BeanFactoryPostProcessor.md

pull/125/head
Yang Libin 3 years ago committed by GitHub
parent b9cf9649ce
commit 115bc11415
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,11 +2,11 @@ BeanFactoryBeanPostProcessor是当BeanDefinition读取完元数据也就是
抄录并翻译官方的语句
> `BeanFactoryPostProcessor` 操作 bean 的元数据配置. 也就是说,Spring IoC 容器允许 `BeanFactoryPostProcessor` 读取配置元数据, 并可能在容器实例化除 `BeanFactoryPostProcessor` 实例之外的任何bean *之前* 更改它
> `BeanFactoryPostProcessor` 操作 bean 的元数据配置. 也就是说,Spring IoC 容器允许 `BeanFactoryPostProcessor` 读取配置元数据, 并可能在容器实例化除 `BeanFactoryPostProcessor` 实例之外的任何 bean _之前_ 更改它
tip:
> 在 `BeanFactoryPostProcessor` (例如使用 `BeanFactory.getBean()`) 中使用这些 bean 的实例虽然在技术上是可行的,但这么来做会将bean过早实例化, 这违反了标准的容器生命周期. 同时也会引发一些副作用,例如绕过 bean 的后置处理.
> 在 `BeanFactoryPostProcessor` (例如使用 `BeanFactory.getBean()`) 中使用这些 bean 的实例虽然在技术上是可行的,但这么来做会将 bean 过早实例化, 这违反了标准的容器生命周期. 同时也会引发一些副作用,例如绕过 bean 的后置处理
```java
public interface BeanFactoryPostProcessor {
@ -23,12 +23,9 @@ public interface BeanFactoryPostProcessor {
ApplicationContext 的 refresh() 中的 invokeBeanFactoryPostProcessors 方法就开始创建我们的 BFPP(BeanFactoryPostProcessor)了
具体执行方法invokeBeanFactoryPostProcessors虽然一百多行代码其实只需要特别了解的地方就几处
具体执行方法 invokeBeanFactoryPostProcessors虽然一百多行代码其实只需要特别了解的地方就几处
```java
public static void invokeBeanFactoryPostProcessors(
ConfigurableListableBeanFactory beanFactory, List<BeanFactoryPostProcessor> beanFactoryPostProcessors) {
public static void invokeBeanFactoryPostProcessors(
ConfigurableListableBeanFactory beanFactory, List<BeanFactoryPostProcessor> beanFactoryPostProcessors) {
@ -290,7 +287,7 @@ Person(name=李华, address=Address(province=四川, city=成都))
让我们 debug 走一遍
如果你已经耐心看完上面的```BeanFactoryPostProcessor执行时期的探究```那么你应该可以知道接下来我们的步骤应该是进入invokeBeanFactoryPostProcessors这个方法里了
如果你已经耐心看完上面的`BeanFactoryPostProcessor执行时期的探究`那么你应该可以知道接下来我们的步骤应该是进入 invokeBeanFactoryPostProcessors 这个方法里了
```java
private static void invokeBeanFactoryPostProcessors(
@ -465,17 +462,4 @@ public Object convertForProperty(@Nullable Object value, String propertyName) th
}
```
你可以自己可以尝试debug一下看别人实践真的不如自己动手实践一下Spring的包装类实属太多但是可以抓住核心流程进行debug
你可以自己可以尝试 debug 一下看别人实践真的不如自己动手实践一下Spring 的包装类实属太多,但是可以抓住核心流程进行 debug。

Loading…
Cancel
Save