jar包
作用:工廠,用於物件的建立
好處:解耦合
是乙個介面型別
介面:遮蔽實現的差異
不會頻繁的建立物件:乙個應用只會建立乙個工廠物件。
建立型別
通過工廠類,建立物件。
名詞解釋i:spring工廠建立的物件叫做bean或者元件(componet)
getbean,通過id獲取物件。
有多重過載,如果一起傳入了類物件,不需要對返回值強轉。
只傳入class的getbean方法,就是在配置檔案中只能有乙個bean標籤型別是person類
getbeannames:可以獲取所有的id值
getbeannamesfortype(類):獲取所有這個類的id值
containsbeandefinition():判斷是否含有
containsbean()
能不能只配置類名?
如果只有乙個類的bean是可以的。這個id會由spring自動生成乙個
應用場景:這個bean只需要使用一次,可以省去id值,如果這個bean使用多次或者被其他bean引用,需要id值。
name屬性
name屬性是別名,是小名。
id和name顯然不是一樣的 ,不然不需要定義兩個
相同:獲取和定義用id和name是一樣的。
區別:id只能有乙個值,別名可以定義多個,別名間以逗號分隔。
(從前)xml的id屬性值必須要以字母開頭,某些整合框架不能完美支援,現在已經可以了id已經修改了這個要求。
name屬性不能用containsbeandefinition()判斷出來。但是containsbean可以。
先通過工廠,讀取配置檔案獲取id和class資訊。
spring通過類的全限定類名反射建立物件。class.forname
反射建立是否呼叫構造方法呢?呼叫!
通過工廠返回,可以通過getbean獲取。
如果構造方法是私有會有影響麼?答案是spring仍然會呼叫到私有的構造方法建立物件,仍然通過反射來實現。
所有的物件都交給spring 工廠建立?
理論上是,但是有特例:實體物件(entity)交給持久層,因為不只需要物件,因為需要資料,spring不知資料庫的資料。
Spring學習筆記二
spring中通過配置xml檔案來達到物件之間的松耦合 依賴注入dl 1.對於同乙個xml檔案,如果想引用bean,直接在ref後面接上id名即可。例如 csvoutputgenerator csvoutputgenerator class com.ray.output.impl.csvoutput...
Spring學習筆記(二)
預設按 bytype找,如果該type配了多個bean,則在這些bean中再通過byname 變數名 的方式匹配,如還未找到或找到2個及以上則拋異常。userservice public class userservice public void init 配合 autowired註解使用,當想通過...
學習筆記 Spring(二)
使用註解的方式完成注入物件中的效果 xmlns xmlns xsi xmlns aop xmlns tx xmlns context xsi schemalocation spring beans 3.0.xsd spring aop 3.0.xsd spring tx 3.0.xsd spring...