導(dǎo)學(xué):學(xué)習(xí)spring源碼
最近下班在跟著視頻在Debug學(xué)習(xí)spring源碼
導(dǎo)學(xué):
JavaBean內(nèi)省Introspector以及BeanInfo
Introspector.getBeanInfo(Class clazz)方法能夠獲得一個類的BeanInfo,Introspector內(nèi)部有個名為beanInfoCache的Map,每次取一個類的beanInfo時,都會在beanInfoCache中緩存。如果沒有,則新創(chuàng)建一個。返回并加入beanInfoCache。
得到了BeanInfo,通過BeanInfo能夠獲取有關(guān)此bean的屬性方法等信息。
如getPropertyDescriptors()和getmethodDescriptors()得到的都是數(shù)組,如PropertyDescriptors[]和MethodDescriptor[]
由于主要是為了學(xué)習(xí)后面的Spring鋪墊,所以我主要看了下PropertyDescriptors
有兩個很重要的方法:
Method ? getReadMethod()
? ? 獲得應(yīng)該用于讀取屬性值的方法。
Method ? ?getWriteMethod()
? ? 獲得應(yīng)該用于寫入屬性值的方法。
Method就是反射包中的Method.
獲取后就可以調(diào)用這個方法對屬性進行讀或者寫的操作啦。
Class對象也能獲得Field,并且由對于屬性的操作,但是如果是private那是沒法操作的。
spring的bean案例
1.創(chuàng)建一個對象
2.main方法測試

可以看出bean的反射
? ? ? ? ? ? ? ?

標(biāo)簽: