spring原理

[color=red]1、spring原理 
                spring的最大作用ioc/di,將類與類的依賴關係寫在配置文件中, 
                程序在運行時根據配置文件動態加載依賴的類,降低的類與類之間 
                的藕合度。它的原理是在applicationContext.xml加入bean標記, 
                在bean標記中通過class屬性說明具體類名、通過property標籤說明 
                該類的屬性名、通過constructor-args說明構造子的參數。其一切都是 
                返射,當通過applicationContext.getBean("id名稱")得到一個類實例時, 
                就是以bean標籤的類名、屬性名、構造子的參數爲準,通過反射實例對象, 
                喚起對象的set方法設置屬性值、通過構造子的newInstance實例化得到對象。 
                正因爲spring一切都是反射,反射比直接調用的處理速度慢,所以這也是spring 
                的一個問題。 
                spring第二大作用就是aop,其機理來自於代理模式,代理模式 
                有三個角色分別是通用接口、代理、真實對象 
                代理、真實對象實現的是同一接口,將真實對象作爲 
                代理的一個屬性,向客戶端公開的是代理,當客戶端 
                調用代理的方法時,代理找到真實對象,調用真實對象 
                方法,在調用之前之後提供相關的服務,如事務、安全、 
                日誌。其名詞分別是代理、真實對象、裝備、關切點、連接點。 
        2、動態代理:不用寫代理類,虛擬機根據真實對象實現的接口產生一個類,通過 
                    類實例化一個動態代理,在實例化動態代理時將真實對象 
                    及裝備註入到動態代理中,向客戶端公開的是動態代理, 
                    當客戶端調用動態代理方法時,動態代理根據類的返射得 
                    到真實對象的Method,調用裝備的invoke方法,將動態代理、 
                    Method、方法參數傳與裝備的invoke方法,invoke方法在喚 
                    起method方法前或後做一些處理。     
                    1、產生動態代理的類: 
                            java.lang.refect.Proxy 
                    2、裝備必須實現InvocationHandler接口實現invoke方法 
        3、反射 
                什麼是類的返射? 
                        通過類說明可以得到類的父類、實現的接口、內部類、構造函數、方法、屬性 
                        並可以根據構造器實例化一個對象,喚起一個方法,取屬性值,改屬性值。 
                如何得到一個類說明? 
                        Class cls=類.class; 
                        Class cls=對象.getClass(); 
                        Class.forName("類路徑"); 
                如何得到一個方法並喚起它? 
                        Class cls=類.class; 
                        Constructor cons=cls.getConstructor(new Class[]{String.class}); 
                        Object obj=cons.newInstance(new Object[]{"aaa"}); 
                        Method method=cls.getMethod("方法名",new Class[]{String.class,Integer.class}); 
                        method.invoke(obj,new Object[]{"aa",new Integer(1)}); 
        4、spring的三種注入方式是什麼? 
                setter 
                interface 
                constructor 
        5、spring的核心接口及核類配置文件是什麼? 
                FactoryBean:工廠bean主要實現ioc/di 
               
                ApplicationContext ac=new FileXmlApplicationContext("applicationContext.xml"); 
                Object obj=ac.getBean("id值"); 
               
                applicationContext.xml 

原理二: 

一、 IoC(Inversion of control): 控制反轉 
1、IoC: 
概念:控制權由對象本身轉向容器;由容器根據配置文件去創建實例並創建各個實例之間的依賴關係 
核心:bean工廠;在Spring中,bean工廠創建的各個實例稱作bean 
二、AOP(Aspect-Oriented Programming): 面向方面編程 
1、 代理的兩種方式: 
靜態代理: 
 針對每個具體類分別編寫代理類; 
 針對一個接口編寫一個代理類; 
動態代理: 
針對一個方面編寫一個InvocationHandler,然後借用JDK反射包中的Proxy類爲各種接口動態生成相應的代理類 
2、 AOP的主要原理:動態代理 



Spring工作原理 
        Spring 已經用過一段時間了,感覺Spring是個很不錯的框架。內部最核心的就是IOC了, 
動態注入,讓一個對象的創建不用new了,可以自動的生產,這其實就是利用java裏的反射 
反射其實就是在運行時動態的去創建、調用對象,Spring就是在運行時,跟xml  Spring的配置 
文件來動態的創建對象,和調用對象裏的方法的 。 
     Spring還有一個核心就是AOP這個就是面向切面編程,可以爲某一類對象 進行監督和控制(也就是 
在調用這類對象的具體方法的前後去調用你指定的 模塊)從而達到對一個模塊擴充的功能。這些都是通過 
配置類達到的。 
   Spring目的:就是讓對象與對象(模塊與模塊)之間的關係沒有通過代碼來關聯,都是通過配置類說明 
管理的(Spring根據這些配置 內部通過反射去動態的組裝對象) 
   要記住:Spring是一個容器,凡是在容器裏的對象纔會有Spring所提供的這些服務和功能。 
Spring裏用的最經典的一個設計模式就是:模板方法模式。(這裏我都不介紹了,是一個很常用的設計模式) 
  Spring裏的配置是很多的,很難都記住,但是Spring裏的精華也無非就是以上的兩點,把以上兩點跟理解了 
也就基本上掌握了Spring.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章