@Value 注入屬性值(下)

@Value 注入屬性值(下)

之前試驗過@Value是在<init>對象實例化後,在注入屬性(即調用類的set方法實現屬性的初始化)前其作用的。
具體是如何起作用以及是什麼時候其作用的。
下圖是spring中一個bean的生命週期:


這裏寫圖片描述

<init>對象實例化即時途中的“實例化”那一步。

注入屬性即時圖中的“設置屬性值”。

那麼@Value的作用時間可能在第三步或事第四步

public interface InstantiationAwareBeanPostProcessor extends BeanPostProcessor {
    Object postProcessBeforeInstantiation(Class<?> var1, String var2) throws BeansException;
​    boolean postProcessAfterInstantiation(Object var1, String var2) throws BeansException;
​    PropertyValues postProcessPropertyValues(PropertyValues var1, PropertyDescriptor[] var2, Object var3, String var4) throws BeansException;
}

InstantiationAwareBeanPostProcessor是BeanPostProcessor的子接口
postProcessPropertyValues方法可以掃描帶有註解的字段和方法,並注入到Bean中
所以通過@Value註解註釋的屬性 就是在第四步中通過InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法注入到bean中的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章