Update BeanPostProcessor.md

pull/124/head
Yang Libin 3 years ago committed by GitHub
parent 527142924a
commit 70192e1fa0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -15,16 +15,16 @@ public interface BeanPostProcessor {
}
```
共有两种方式实现
共有两种方式实现
- 实现BeanPostProcessor 接口然后将此类注册到Spring即可
- 第二种是通过`ConfigurableBeanFactory` 的 addBeanPostProcessor方法进行注册.
- 实现 BeanPostProcessor 接口,然后将此类注册到 Spring 即可
- 第二种是通过`ConfigurableBeanFactory` 的 addBeanPostProcessor 方法进行注册。
BeanPostProcess可以有多个并且可以通过设置 order 属性来控制这些 BeanPostProcessor实例的执行顺序. 仅当 BeanPostProcessor 实现 Ordered 接口时,才能设置此属性或者PriorityOrdered接口
BeanPostProcess 可以有多个,并且可以通过设置 order 属性来控制这些 BeanPostProcessor 实例的执行顺序。 仅当 BeanPostProcessor 实现 Ordered 接口时,才能设置此属性,或者 PriorityOrdered 接口
如果某个类实现了BeanPostProcessor则它会在AbstractApplicationContext中的 registerBeanPostProcessors(beanFactory)方法中创建bean而不是和普通的bean一样在finishBeanFactoryInitialization(beanFactory)中才被创建
如果某个类实现了 BeanPostProcessor 则它会在 AbstractApplicationContext 中的 registerBeanPostProcessors(beanFactory)方法中创建 bean 而不是和普通的 bean 一样在 finishBeanFactoryInitialization(beanFactory)中才被创建
当我们注册BeanPostProcessor的时候其中我省略了大部分无关代码
当我们注册 BeanPostProcessor 的时候,其中我省略了大部分无关代码
```java
public static void registerBeanPostProcessors(
@ -73,7 +73,7 @@ public static void registerBeanPostProcessors(
在此我举例一个典型的例子 AutowiredAnnotationBeanPostProcessor是 BeanPostProcessor 的一个子类,是@Autowired 和@Value 的具体实现,其他的子类你也可以按如下的流程自行走一边,注意我的例子只是一个最为简单的例子,也就是用@Autowired 注入了一个普通的字段对象
我们看看AutowiredAnnotationBeanPostProcessor类当然也是省略大部分代码
我们看看 AutowiredAnnotationBeanPostProcessor 类,当然也是省略大部分代码
```java
// 这个类可以看见当我们创建AutowiredAnnotationBeanPostProcessor对象的时候完成了一个工作就是给
@ -109,7 +109,7 @@ public PropertyValues postProcessProperties(PropertyValues pvs, Object bean, Str
}
```
BeanPostProcessor的职责是在bean初始化后进行实例的更改所以我们在普通bean实例化的时候就可以看见它的身影 AbstractAutowireCapableBeanFactory中的populateBean就是给bean属性填充值同样我们省略大部分代码
BeanPostProcessor 的职责是在 bean 初始化后进行实例的更改,所以我们在普通 bean 实例化的时候就可以看见它的身影 AbstractAutowireCapableBeanFactory 中的 populateBean 就是给 bean 属性填充值,同样我们省略大部分代码
```java
protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw) {
@ -140,4 +140,4 @@ protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable B
}
```
至此当前的bean就实现了@Autowired的字段注入当然看似过程简单但是是省略了大部分里面细节多如牛毛
至此当前的 bean 就实现了@Autowired 的字段注入,整个过程看似简单,但却有诸多细节

Loading…
Cancel
Save