抖音seo排名系統(tǒng)公司影響seo排名的因素有哪些
依賴注入底層原理流程圖:
Spring中Bean的依賴注入原理| ProcessOn免費在線作圖,在線流程圖,在線思維導圖
Spring中到底有幾種依賴注入的方式?
首先分兩種:
- 手動注入
- 自動注入
手動注入
在XML中定義Bean時,就是手動注入,因為是程序員手動給某個屬性指定了值。
<bean name="userService" class="com.luban.service.UserService"><property name="orderService" ref="orderService"/>
</bean>
上面這種底層是通過set方法進行注入。
<bean name="userService" class="com.luban.service.UserService"><constructor-arg index="0" ref="orderService"/>
</bean>
上面這種底層是通過構造方法進行注入。
所以手動注入的底層也就是分為兩種:
- set方法注入
- 構造方法注入
自動注入
自動注入又分為兩種:
- XML的autowire自動注入
- @Autowired注解的自動注入
XML的autowire自動注入
在XML中,我們可以在定義一個Bean時去指定這個Bean的自動注入模式:
- byType
- byName
- constructor
- default
- no
比如:
<bean id="userService" class="com.luban.service.UserService" autowire="byType"/>
這么寫,表示Spring會自動的給userService中所有的屬性自動賦值(不需要這個屬性上有@Autowired注解,但需要這個屬性有對應的set方法)。
在創(chuàng)建Bean的過程中,在填充屬性時,Spring會去解析當前類,把當前類的所有方法都解析出來,Spring會去解析每個方法得到對應的PropertyDescriptor對象,PropertyDescriptor中有幾個屬性:
- name:這個name并不是方法的名字,而是拿方法名字進過處理后的名字(如果方法名字以“get”開頭,比如“getXXX”,那么name=XXX;如果方法名字以“is”開頭,比如“isXXX”,那么name=XXX;如果方法名字以“set”開頭,比如“setXXX”,那么name=XXX)
- readMethodRef:表示get方法的Method對象的引用
- readMethodName:表示get方法的名字
- writeMethodRef:表示set方法的Method對象的引用
- writeMethodName:表示set方法的名字
- propertyTypeRef:如果有get方法那么對應的就是返回值的類型,如果是set方法那么對應的就是set方法中唯一參數的類型
get方法的定義是: 方法參數個數為0個,并且 (方法名字以"get"開頭 或者 方法名字以"is"開頭并且方法的返回類型為boolean)
set方法的定義是:方法參數個數為1個,并且 (方法名字以"set"開頭并且方法返回類型為void)
所以,Spring在通過byName的自動填充屬性時流程是:
- 找到所有set方法所對應的XXX部分的名字
- 根據XXX部分的名字去獲取bean
S