學習園地

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            3 Posts :: 14 Stories :: 0 Comments :: 0 Trackbacks
          一、 IoC(Inversion of control): 控制反轉  
          概念:控制權由對象本身轉向容器;由容器根據配置文件去創建實例并創建各個實例之間的依賴關系 
          核心:bean工廠;在Spring中,bean工廠創建的各個實例稱作bean 
           
          內部最核心的就是IOC
          動態注入,讓一個對象的創建不用new了,可以自動的生產,這其實就是利用java里的反射 
          反射其實就是在運行時動態的去創建、調用對象,Spring就是在運行時,跟xml  Spring的配置 文件來動態的創建對象,和調用對象里的方法的 。
           
          二、AOP(Aspect-Oriented Programming): 面向方面編程 
          1、 代理的兩種方式: 
          靜態代理: 
          ? 針對每個具體類分別編寫代理類; 
          ? 針對一個接口編寫一個代理類; 
          動態代理: 
          針對一個方面編寫一個InvocationHandler,然后借用JDK反射包中的Proxy類為各種接口動態生成相應的代理類 
          2、 AOP的主要原理:動態代理 

          另一個核心就是AOP
          這個就是面向切面編程,可以為某一類對象 進行監督和控制(也就是在調用這類對象的具體方法的前后去調用你指定的 模塊)從而達到對一個模塊擴充的功能。這些都是通過配置類達到的。 
          Spring目的:就是讓對象與對象(模塊與模塊)之間的關系沒有通過代碼來關聯,都是通過配置類說明 
          管理的(Spring根據這些配置 內部通過反射去動態的組裝對象) 
          要記住:Spring是一個容器,凡是在容器里的對象才會有Spring所提供的這些服務和功能。 
          Spring里用的最經典的一個設計模式就是:模板方法模式。  Spring里的配置是很多的,很難都記住,但是Spring里的精華也無非就是以上的兩點,把以上兩點跟理解了 
          也就基本上掌握了Spring. 

           
          三、spring原理 
                          spring的最大作用ioc/di,將類與類的依賴關系寫在配置文件中,
                          程序在運行時根據配置文件動態加載依賴的類,降低的類與類之間
                          的藕合度。它的原理是在applicationContext.xml加入bean標記,
                          bean標記中通過class屬性說明具體類名、通過property標簽說明
                          該類的屬性名、通過constructor-args說明構造子的參數。其一切都是
                          返射,當通過applicationContext.getBean("id名稱")得到一個類實例時,
                          就是以bean標簽的類名、屬性名、構造子的參數為準,通過反射實例對象,
                          喚起對象的set方法設置屬性值、通過構造子的newInstance實例化得到對象。
                          正因為spring一切都是反射,反射比直接調用的處理速度慢,所以這也是spring
                          的一個問題。
                          spring第二大作用就是aop,其機理來自于代理模式,代理模式
                          有三個角色分別是通用接口、代理、真實對象
                          代理、真實對象實現的是同一接口,將真實對象作為
                          代理的一個屬性,向客戶端公開的是代理,當客戶端
                          調用代理的方法時,代理找到真實對象,調用真實對象
                          方法,在調用之前之后提供相關的服務,如事務、安全、
                          日志。其名詞分別是代理、真實對象、裝備、關切點、連接點。
           
          四、動態代理:
          不用寫代理類,虛擬機根據真實對象實現的接口產生一個類,通過類實例化一個動態代理,在實例化動態代理時將真實對象及裝備注入到動態代理中,向客戶端公開的是動態代理,當客戶端調用動態代理方法時,動態代理根據類的返射得到真實對象的Method,調用裝備的invoke方法,將動態代理、Method、方法參數傳與裝備的invoke方法,invoke方法在喚method方法前或后做一些處理。     
                              1、產生動態代理的類:
                                      java.lang.refect.Proxy
                              2、裝備必須實現InvocationHandler接口實現invoke方法
          五、反射:
          什么是類的返射?
          通過類說明可以得到類的父類、實現的接口、內部類、構造函數、方法、屬性并可以根據構造器實例化一個對象,喚起一個方法,取屬性值,改屬性值。
          如何得到一個類說明?
            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)}); 
          六、spring的三種注入方式
                 setter
                 interface
                 constructor
          七、spring的核心接口及核類配置文件
                  FactoryBean:工廠bean主要實現ioc/di
                         
                          ApplicationContext ac=new FileXmlApplicationContext("applicationContext.xml");
                          Object obj=ac.getBean("id");
                         
                          applicationContext.xml
          posted on 2012-06-13 14:34 丘比特 閱讀(146) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 雅安市| 阿拉善盟| 阆中市| 陈巴尔虎旗| 永新县| 吉安县| 和田县| 德江县| 安义县| 进贤县| 皋兰县| 和硕县| 金乡县| 湾仔区| 二手房| 泰和县| 台安县| 唐海县| 漠河县| 鄂伦春自治旗| 都江堰市| 同心县| 吴堡县| 榕江县| 徐州市| 昌平区| 惠州市| 通化县| 安龙县| 鄂托克前旗| 兰州市| 绥滨县| 天等县| 临漳县| 丰顺县| 秦安县| 涞源县| 德兴市| 全州县| 达日县| 长治市|