即興的靈感

          思維是一種藝術(shù); 藝術(shù)需要靈感。

          導(dǎo)航

          公告

           覺(jué)悟微智能 白米飯自媒體

          留言簿(29)

          隨筆分類

          隨筆檔案

          相冊(cè)

          閱讀排行榜

          評(píng)論排行榜

          博客好友

          最新評(píng)論

          Spring筆記之三(Usage of property config)

          本文內(nèi)容演示屬性文件用法的簡(jiǎn)單例子。
          首先定義模型接口Model,視圖接口View,以及它們實(shí)現(xiàn)類ImpModel,ImpView.
          Model中定義方法getString();View中定義Model實(shí)例為其屬性,在實(shí)現(xiàn)類ImpView中實(shí)現(xiàn)方法
          disPlay(),其方法體為Model實(shí)例的getString()方法,并將其打印出來(lái)。

          定義屬性文件
          msf.properties
          disPalyer.class
          = ImpView
          provider.class
          = ImpModel


          編寫工廠類
          TestFactory.java
          import ?java.util.Properties;
          public ? class ?TestFactory{
          ????
          private ? static ?TestFactory?instance? = ? null ;
          ????
          private ?Properties?props? = ? null ;
          ????
          private ?View?disPalyer? = ? null ;
          ????
          private ?Model?provider? = ? null ;

          ????
          static ?{
          ????????instance?
          = ? new ?TestFactory();
          ????}

          ????
          public ? static ?TestFactory?getInstance()?{
          ????????
          return ?instance;
          ????}

          ????
          public ?View?getView()?{
          ????????
          return ?disPalyer;
          ????}

          ????
          public ?Model?getModel()?{
          ????????
          return ?provider;
          ????}

          ????
          private ?TestFactory()?{
          ????????props?
          = ? new ?Properties();

          ????????
          try ?{
          ????????????
          // 加載屬性文件
          ????????????props.load(?TestFactory. class .getResource( " msf.properties " ).openStream());?

          ????????????
          // 獲取屬性值
          ????????????String?rendererClass? = ?props.getProperty( " renderer.class " );
          ????????????String?providerClass?
          = ?props.getProperty( " provider.class " );

          ????????????
          // 產(chǎn)生類實(shí)例對(duì)象
          ????????????renderer? = ?(View)?Class.forName(rendererClass).newInstance();
          ????????????provider?
          = ?(Model)?Class.forName(providerClass).newInstance();
          ????????}?
          catch ?(Exception?ex)?{
          ????????????ex.printStackTrace();
          ????????}
          ????}
          }


          最后編寫測(cè)試方法
          1??public?static?void?main(String[]?args)?{
          2?????????????View?mr?=?TestFactory.getInstance().getView();
          3?????????????Model?mp?=?TestFactory.getInstance().getModel();
          4?????????????mr.setModel(mp);
          5?????????????mr.disPlay();
          6?????????}

          綜上,對(duì)屬性文件的加載主要語(yǔ)句
          props.load( TestFactory.class.getResource("msf.properties").openStream());
          并分別通過(guò)newInstance()產(chǎn)生實(shí)例對(duì)象,本例中使用了設(shè)計(jì)模式中的工廠模式以及單例實(shí)例模式,
          因此具有對(duì)設(shè)計(jì)模式進(jìn)一步了解的意義。


          注:另一用法
          ?1?public?static?void?main(String[]?args)?throws?Exception?{
          ?2?
          ?3?????????//?get?the?bean?factory
          ?4?????????BeanFactory?factory?=?getBeanFactory();
          ?5?
          ?6?????????View?mr?=?(View)?factory.getBean("view");
          ?7?????????mr.render();
          ?8?????}
          ?9?
          10?????private?static?BeanFactory?getBeanFactory()?throws?Exception?{
          11?????????//?get?the?bean?factory
          12?????????DefaultListableBeanFactory?factory?=?new?DefaultListableBeanFactory();
          13?
          14?????????//?create?a?definition?reader
          15?????????PropertiesBeanDefinitionReader?rdr?=?new?PropertiesBeanDefinitionReader(
          16?????????????????factory);
          17?
          18?????????//?load?the?configuration?options
          19?????????Properties?props?=?new?Properties();
          20?????????props.load(TestFactory.class.getResource("msf.properties").openStream());
          21?
          22?????????rdr.registerBeanDefinitions(props);
          23?
          24?????????return?factory;
          25?????}


          ?
          鳳凰涅槃/浴火重生/馬不停蹄/只爭(zhēng)朝夕
          ???? 隱姓埋名/低調(diào)華麗/簡(jiǎn)單生活/完美人生

          posted on 2007-09-24 13:51 poetguo 閱讀(1549) 評(píng)論(3)  編輯  收藏 所屬分類: Spring

          評(píng)論

          # re: Spring筆記之三(Usage of property config) 2007-09-24 15:44 千里冰封

          不錯(cuò),可惜一直和SPRING無(wú)緣:(  回復(fù)  更多評(píng)論   

          # re: Spring筆記之三(Usage of property config) 2007-09-24 22:45 劉甘泉

          第一個(gè)和spring沒(méi)關(guān)系吧?只是用了reflection而已,第二個(gè)才用的是spring 的api?  回復(fù)  更多評(píng)論   

          # re: Spring筆記之三(Usage of property config) 2007-09-24 23:43 improviser

          是的,澀及到的用法做個(gè)比較  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 将乐县| 桃园市| 钟山县| 库尔勒市| 威宁| 新丰县| 安平县| 台前县| 华阴市| 栾城县| 桐柏县| 刚察县| 舒兰市| 福建省| 来安县| 利津县| 长泰县| 武强县| 玛沁县| 大竹县| 琼海市| 贺州市| 溧阳市| 疏勒县| 余庆县| 泸西县| 阳信县| 喀喇沁旗| 当雄县| 深圳市| 霍州市| 贵港市| 伊宁市| 监利县| 长白| 平乡县| 逊克县| 治县。| 松潘县| 中卫市| 南和县|