隨筆-54  評論-0  文章-2  trackbacks-0

                                                Spring

           對這個框架并不陌生,spring是一個開源的控制反轉(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是簡化企業開發...

          1.為Spring添加jar支持

          2.Spring1.xml + 反射

                 2.不需要實例化

                    3.不需要set方法

           以前 至上而下, 按部就班

                        之下而上,反的

          3. bean的生命周期

                 bean被載入到容器中時,他的生命周期就開始

                 了。bean工廠在一個bean可以使用前完成很多

                 工作:

                 1.容器尋找bean的定義信息并實例化。

                 2.使用依賴注入,springbean定義信息配置bean的所有屬性。

                 3.bean實現了BeanNameAware接口,工廠調用BeansetBeanName

                  ()方法傳遞beanID

                 4.bean實現了BeanFactoryAware接口,工廠調用setBeanFactory()

                    方法傳入工廠自身。

                 5.BeanPostProcessorbean關聯,則它們的

                    postProcessBeforeInitialization()方法被調用。

                 6.bean指定了ini-method方法、,它將被調用。

                 7.最后,若有BeanPostProcessorbean關聯,則它們的

                    postProcessAfterInitialization()方法被調用、。

          4.set注入的缺點:

           無法清晰表達哪些屬性是必須的,哪些是可選

              的,構造注入的優勢是通過構造強制依賴關系,不可能實例化不

              完全的或無法使用的bean

          5.自動裝配

             <bean id=" " class="" autowire="autowire 類型">

              有四種自動裝配類型:

              1.byName:尋找和屬性名相同的bean,若找不到,則裝不上。

              2.byType:尋找和屬性類型相同的bean,找不到,裝不上,找到多個拋異常。

              3.constructor:查找和bean的構造參數一致的一個或

                多個bean,若找不到或找到多個,拋異常。按照參數的類型裝配 

              4.autodetect: (3) 或者(2)方式選一個。不確定

                 性的處理與(3)(2)一致。

          注意:

               spring2.5提供了<context:annotation-config />配置.

               該配置可激活在類中探測到的各種注解,@Required @Autowire @PostConstrct @PreDestroy @Resource @EJB @PersistenceContext @WebServiceRef等等,

               也可以選擇為這些注解激活單獨的后處理器.

          6.屬性的外部化

           分散配置

           將配置文件分成幾個分散的配置文件。如數據源。

             <bean class="...PropertyPlaceholderConfigurer">

                  <property name="locations">

                       <list>

                            <value>jdbc.properties</value>

                            <value>securtiy.properties</value>

                         </list>

                    </property>

              </bean>

             當然在Spring2.5可以簡化為

             <context:property-placehoder location>

          7.AOP

          有一些模塊是每個系統都需要的,切面是系統 模塊化的一個切面或領域。如日志記錄。不改變源代碼,還給類增加新的功能

           2.連接點:應用程序執行過程中,可以應用切面的地點,可以是方法調用,異常拋出,或者要修改的

                         字段。

           3.通知:切面的實際實現,他通知系統新的行為。

           4.切入點:定義了通知應該應用在哪些連接點,通知可以應用到AOP框架支持的任何連接點。

           5.引入:為類添加新方法和屬性。

           6.目標對象:被通知的對象。既可以是你編寫的類也可以是第三方類。

           7.代理:將通知應用到目標對象后創建的對象,應用系統的其他部分不用為了支持代理對象而

                      改變。

           8.織入:將切面應用到目標對象從而創建一個新代理對象的過程。織入發生在目標

                      對象生命周期的多個點上:

                      編譯期:切面在目標對象編譯時織入.這需要一個特殊的編譯器.

                      類裝載期:切面在目標對象被載入JVM時織入.這需要一個特殊的類載入器.

                      運行期:切面在應用系統運行時織入.

          今天到此結束,明天繼續!

          posted on 2010-02-26 23:02 d66380022 閱讀(235) 評論(0)  編輯  收藏
          主站蜘蛛池模板: 长子县| 布拖县| 泰宁县| 库尔勒市| 措美县| 郸城县| 大厂| 罗平县| 柘城县| 西平县| 遵化市| 休宁县| 门头沟区| 岳西县| 馆陶县| 麻江县| 绥江县| 克东县| 满城县| 大悟县| 灌阳县| 遵义县| 东乡族自治县| 乌海市| 林芝县| 团风县| 磐安县| 连南| 巴塘县| 宣化县| 岑溪市| 岫岩| 乐昌市| 平泉县| 遂昌县| 富川| 循化| 曲阳县| 平和县| 重庆市| 屏东市|