<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    美麗涵涵童裝店--說我博客名字,給你們打折!
    隨筆 - 82  文章 - 266  trackbacks - 0
    <2007年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456


    點(diǎn)擊這里給楊愛友發(fā)消息
    美麗涵涵童裝店
    說我博客名字,給你們打折!

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章檔案

    好友的BLOG

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

                                                                第一章 概論
    1. 關(guān)于輕量重量級的解釋
        夏昕說:現(xiàn)在的輕量級和重量級的確很難區(qū)分了,沒有一個(gè)明確的衡量標(biāo)準(zhǔn),之前有人說,有classloader的算是重量級;也有人說,超過3MB的算是重量級,spring core算是輕量級的,但是加上期于的部件,估計(jì)就得列入重量記的范疇了。
    林信良說:用了spring并不等于輕量級開發(fā)。重點(diǎn)是您有沒有采納其精神,用了IOC就輕量級了嗎?不見得。什么都來不DI,我看也是很沉重的;如果你在設(shè)計(jì)時(shí)善用IoC,即使不用spring也是輕量級。不要為了spring而spring。
    2. IoC的理解
       Don't call me,I will call you!程序不依賴于實(shí)現(xiàn),而是依賴與抽象接口。在設(shè)計(jì)業(yè)務(wù)類時(shí),我們設(shè)計(jì)為它依賴于某抽象接口,具體的需要哪個(gè)實(shí)現(xiàn)類是由配置文件來幫我們注入的。這就是面向接口編程的思想,當(dāng)業(yè)務(wù)需求發(fā)生變動時(shí),我們只需修改其實(shí)現(xiàn)類的具體實(shí)現(xiàn),而接口并沒有改變,所以低層業(yè)務(wù)代碼不做任何改動,既增加了代碼的復(fù)用率,也是功能接口變得清晰。Don't call me,you should call my interface!
    3. DI 依賴注入的理解
        保留抽象接口,讓組件依賴抽象接口,當(dāng)組件要與其他實(shí)際的對象發(fā)生依賴關(guān)系時(shí),由抽象接口來注入依賴的實(shí)際對象。依賴注入,注入你所依賴的實(shí)現(xiàn)類,由spring容器幫你注入適合的實(shí)現(xiàn)類,而不是你自己去創(chuàng)建bean實(shí)例。有3種基本實(shí)現(xiàn)方式:Interface injection、Setter injection與Constructor injection。
    4. 應(yīng)用程序中獲取bean

    1     <bean id="helloBean" class="chapter2.HelloBean">
    2         <property name="helloWord">
    3             <value>Hello yangay!</value>
    4         </property>
    5     </bean>

        public static void main(String[] args) {
            Resource rs 
    = new ClassPathResource("applicationContext.xml");//從classpath下加載配置信息
            BeanFactory factory = new XmlBeanFactory(rs);//基于xml格式配置文件的實(shí)例化方式,得到一個(gè)BeanFactory
            HelloBean hello = (HelloBean)factory.getBean("helloBean");//獲取id="helloBean"的bean,此時(shí)可以調(diào)用bean里定義的所有方法
            System.out.println(hello.getHelloWord());
        }
       
        這是通過beanFactory管理Bean的方式,BeanFactory負(fù)責(zé)讀取Bean定義文件;管理對象的加載、生成;維護(hù)Bean對象之間的依賴關(guān)系;負(fù)責(zé)Bean的生命周期,對于簡單的應(yīng)用程序來說,使用BeanFactory就已經(jīng)足夠來管理Bean了。BeanFactory接口提供了六個(gè)方法管理Bean。
    另外還可以通過ApplicationContext來獲取Bean對象:

    1 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");//從classpath下加載配置信息
    2 HelloBean hello = (HelloBean)ctx.getBean("helloBean");//獲取id="helloBean"的bean,此時(shí)可以調(diào)用bean里定義的所有方法

                                第二章 spring IoC、AOP實(shí)例及分析
    1. IoC實(shí)例一
        控制反轉(zhuǎn)用得最多的是為業(yè)務(wù)類注入Bean對象,典型的應(yīng)用是在結(jié)合struts開發(fā)是,為struts的action類來注入springDao,這樣在業(yè)務(wù)層如action類中不再介入spring API,但同時(shí)又可以利用spring提供的所有便捷功能。低層實(shí)現(xiàn)細(xì)節(jié)發(fā)生的變化,對業(yè)務(wù)層來說是透明的,不但降低了程序的偶合性,而且也提高了DAO對象的重用性。在這個(gè)例子中,為了簡單起見,我們只為HelloBean注入了一個(gè)字符串,而不是注入實(shí)體Bean。但這只體現(xiàn)出了控制反轉(zhuǎn)的特點(diǎn),對于依賴注入DI并沒有得到明顯的體現(xiàn)。
    1)首先編寫一個(gè)簡單的JAVABEAN
    1 public class HelloBean {
    2     private String helloWord;

    3     public String getHelloWord() {
    4         return helloWord;
    5     }
    6     public void setHelloWord(String helloWord) {
    7         this.helloWord = helloWord;
    8     }
    9 }
    2)接下來編寫 Bean定義文件,定義文件告訴spring如何完成以來關(guān)系的注入等動作。我們這里命名文件為applicationContext.xml,定義文件中省略了xml文件的頭
    1     <bean id="helloBean" class="chapter2.HelloBean">//應(yīng)用程序中用于取得bean的標(biāo)志
    2         <property name="helloWord">//設(shè)置了bean中setter的名稱
    3             <value>Hello yangay!</value>//設(shè)置了將要注入的值
    4         </property>
    5     </bean>

    3)最后編寫一個(gè)簡單的示范程序
    1 public class SpringDemo {
    2 
    3     public static void main(String[] args) {
    4         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    5         HelloBean hello = (HelloBean)ctx.getBean("helloBean");//獲取id="helloBean"的bean,此時(shí)可以調(diào)用bean里定義的所有方法
    6         System.out.println(hello.getHelloWord());
    7     }
    8 }
    運(yùn)行之,將會看到在bean定義文件中為"helloWord"設(shè)置的值"Hello yangay!"被打印出來。
    --------------------
    2. 1. IoC實(shí)例二
        其實(shí)spring IoC的初衷就是降低程序的偶合性,使開發(fā)者面向接口編程,使業(yè)務(wù)層設(shè)計(jì)不以來于實(shí)現(xiàn),具體依賴與哪個(gè)bean是在speing培植文件中來定義的。同樣在這里寫一個(gè)示范程序,包括一個(gè)接口,兩個(gè)實(shí)現(xiàn)類,一與業(yè)務(wù)有關(guān)的Business類,Business類依賴的是接口,而不是接口的實(shí)現(xiàn),具體需要哪個(gè)實(shí)現(xiàn)是由spring容器來實(shí)現(xiàn)注入的。
    1)接口
    只聲明了一個(gè)保存的方法
    1 public interface IDeviceWriter {
    2     void svaeToDevice();
    3 }
    2)第一個(gè)實(shí)現(xiàn)IDeviceWriter接口的類,存儲到軟盤
    1 public class FloppyWriter implements IDeviceWriter{
    2 
    3     public void svaeToDevice() {
    4         System.out.println("存儲至軟盤");
    5     }
    6 }
    3)第二個(gè)實(shí)現(xiàn)IDeviceWriter接口的類,存儲到硬盤
    1 
    2 public class DiskWriter implements IDeviceWriter{
    3 
    4     public void svaeToDevice() {
    5         System.out.println("存儲至硬盤");
    6     }
    7 }

    4)業(yè)務(wù)類,依賴于抽象的IDviceWriter接口,要 存儲到磁盤還是軟盤是由spring配置文件來決定的
     1 public class Business {
     2 
     3     private IDeviceWriter writer;
     4     public void save(){
     5         writer.svaeToDevice();
     6     }
     7 
     8     public IDeviceWriter getWriter() {
     9         return writer;
    10     }
    11     public void setWriter(IDeviceWriter writer) {
    12         this.writer = writer;
    13     }
    14 }
    5)bean的定義文件
    1     <bean id="floppyWriter" class="chapter2.FloppyWriter"/>
    2     <bean id="diskWriter" class="chapter2.FloppyWriter"/>
    3     <bean id="business" class="chapter2.Business">
    4         <property name="writer">
    5             <ref bean="floppyWriter"/>
    6         </property>
    7     </bean>
        將id為writer的bean注入到business Bean中,在Business對象中可以調(diào)用FloppyWriter的所有方法,實(shí)現(xiàn)了將數(shù)據(jù)保存至軟盤的功能。

    6)測試類
    1 public class SpringDemo2 {
    2 
    3     public static void main(String[] args) {
    4         Resource rs = new ClassPathResource("applicationContext.xml");
    5         BeanFactory factory = new XmlBeanFactory(rs);
    6         Business business = (Business) factory.getBean("business");
    7         business.save();
    8     }
    9 }

        現(xiàn)在如果我們想要把數(shù)據(jù)保存到硬盤,而不是軟盤了,我們只需要修改bean的配置文件,讓業(yè)務(wù)類Business依賴于diskWriter既可,Business不做任何的修改。這也是面向接口編程的好處所在。



    posted on 2007-09-04 00:22 楊愛友 閱讀(1397) 評論(6)  編輯  收藏 所屬分類: java相關(guān)技術(shù)

    FeedBack:
    # re: spring2.0使用手冊學(xué)習(xí)筆記(一) 2007-09-04 17:25 千山鳥飛絕
    我怎么沒看得出2.0的東西來,這些只是spring一直以來就有的東東。
    建議Lz取標(biāo)題實(shí)在一點(diǎn)。  回復(fù)  更多評論
      
    # re: spring2.0使用手冊學(xué)習(xí)筆記(一) 2007-09-04 17:37 楊愛友
    @千山鳥飛絕
    也許吧,我本意也不是只記錄2.0的新東西。我對spring了解不多,不過這些確實(shí)是我看過spring2.0后寫的,當(dāng)然應(yīng)該大部分內(nèi)容還是1.0就有的吧。  回復(fù)  更多評論
      
    # re: spring2.0使用手冊學(xué)習(xí)筆記(一) 2007-09-04 20:44 BeanSoft
    呵呵, 2.0 加了不少的垃圾功能, 一下子變得不輕量了. 就跟 Struts 一樣, 最核心的東西出現(xiàn)在 1.0 之前, 之后的好多就有點(diǎn)雞肋了.  回復(fù)  更多評論
      
    # re: spring2.0使用手冊學(xué)習(xí)筆記(一) 2007-09-05 13:37 Lingo
    比如呢?哪些垃圾功能?  回復(fù)  更多評論
      
    # re: spring2.0使用手冊學(xué)習(xí)筆記(一) 2007-09-06 09:09 hello
    寫得很不錯(cuò),支持,希望你不斷進(jìn)步!!  回復(fù)  更多評論
      
    # re: spring2.0使用手冊學(xué)習(xí)筆記(一) 2007-09-06 12:49 楊愛友
    @hello
    謝謝,一定,我會的。再引用下朋友的話,“只要你保持學(xué)習(xí)的熱情與動力,把握好方向,必然會取得長足的進(jìn)步”,貴在堅(jiān)持!
    should you know me ?
      回復(fù)  更多評論
      
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: 亚洲娇小性xxxx| 亚洲 日韩 色 图网站| aa级毛片毛片免费观看久| 国产午夜亚洲精品午夜鲁丝片| 一级毛片无遮挡免费全部| 久久久久亚洲精品中文字幕| 日本不卡免费新一区二区三区| 中文字幕亚洲色图| 精品国产精品久久一区免费式 | 免费无码黄网站在线看| 亚洲丝袜美腿视频| 免费无码看av的网站| 2019中文字幕在线电影免费| 国产亚洲一卡2卡3卡4卡新区 | 亚洲另类春色国产精品| 四虎免费影院4hu永久免费| a级毛片无码免费真人久久| 亚洲精品伊人久久久久| 亚洲尹人九九大色香蕉网站| 国产青草视频免费观看97| 成人A片产无码免费视频在线观看| 在线观看免费亚洲| 亚洲一区精品无码| 久久久久国色AV免费看图片| 国产精品视频全国免费观看| 亚洲香蕉久久一区二区| 少妇中文字幕乱码亚洲影视| 亚洲精品无码专区在线在线播放| 国产福利在线观看免费第一福利| yellow视频免费看| 成人精品综合免费视频| 色偷偷女男人的天堂亚洲网 | 精品国产污污免费网站| 亚洲欧美国产日韩av野草社区| 亚洲国产精品无码成人片久久| 特级淫片国产免费高清视频| 岛国大片免费在线观看| 亚欧免费视频一区二区三区| 中国性猛交xxxxx免费看| 亚洲国产精品自在自线观看| 久久亚洲AV成人无码国产|