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

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

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

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統(tǒng)計

    留言簿(23)

    積分與排名

    優(yōu)秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    Spring中IOC的實現(xiàn) (轉)


                  了解了IOC模式的思想以及其優(yōu)點,再來學習其實現(xiàn)。上篇blog中大致描述了PicoContainer以及Spring各自對IOC的實現(xiàn),這篇來詳細看一下Spring中它的實現(xiàn)。

    SpringIOC貫穿了其整個框架,但正如martinflower所說:“saying that these lightweight containers are special because they use inversion of control is like saying my car is special because it has wheels”,IOC已經稱為框架設計中必不可少的部分。就實現(xiàn)上來講Spring采取了配置文件的形式來實現(xiàn)依賴的注射,并且支持Type2 IOCSetter Injection)以及Type3 IOCConstructor Injection)。

         SpringIOC的實現(xiàn)的核心是其Core Bean Factory,它將框架內部的組件以一定的耦合度組裝起來,并對使用它的應用提供一種面向服務的編程模式(SOPService-Orient Programming),比如Spring中的AOP、以及持久化(Hibernateibatics)的實現(xiàn)。
        首先從最底層最基礎的factory Bean開始,先來看org.springframework.beans.factory.Bean

    Factory接口,它是一個非常簡單的接口,getBean方法是其中最重要的方法,Spring通常是使用xmlpopulate Bean,所以比較常用的是XMLFactoryBean


    用一個簡單的示例看一下其用法。首先寫下兩個
    Bean類:

    ExampleBean 類:
    public class ExampleBean {

           private String psnName=null;

           private RefBean refbean=null;

           private String addinfo=null;

           public String getAddinfo() {

                  return getRefbean().getAddress()+getRefbean().getZipcode();

           }

           public String getPsnName() {

                  return psnName;

           }

           public void setPsnName(String psnName) {

                  this.psnName = psnName;

           }

           public void setRefbean(RefBean refbean) {

                  this.refbean = refbean;

           }

           public RefBean getRefbean() {

                  return refbean;

           }

           public void setAddinfo(String addinfo) {
                  this.addinfo = addinfo;
           }
    }

    RefBean
    類:

    public class RefBean {

           public String getAddress() {

                  return address;

           }

           public void setAddress(String address) {

                  this.address = address;

           }

           public String getZipcode() {

                  return zipcode;

           }

           public void setZipcode(String zipcode) {

                  this.zipcode = zipcode;

           }

           private String zipcode=null;

           private String address=null;

    }


    xml配置文件 Bean.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

    "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>

      <bean id="exampleBean" class="test.ExampleBean">

        <property name="psnName"><value>xkf</value></property>

        <property name="refbean">

           <ref bean="refBean"/>

        </property>

      </bean>

      <bean id="refBean" class="test.RefBean">

      <property name="address"><value>BeiJing</value></property>

      <property name="zipcode"><value>100085</value></property>

      </bean>

    </beans>

     

        然后可以寫個測試類來測試,當然,需要Spring中的Spring-core.jar以及commons-logging.jar,當然在elipse中可以通過安裝spring-ide插件來輕松實現(xiàn)。

    public class Test {

           public static void main(String[] args){

                  try{

                  Resource input = new ClassPathResource("test/Bean.xml");

                  System.out.println("resource is:"+input);

                  BeanFactory factory = new XmlBeanFactory(input);

                  ExampleBean eb =

                  (ExampleBean)factory.getBean("exampleBean");

                  System.out.println(eb.getPsnName());

                  System.out.println(eb.getAddinfo());

           }

           catch(Exception e){

                  e.printStackTrace();

           }

    }


         這樣,通過
    BeanFactorygetBean方法,以及xml配置文件,避免了在test類中直接實例化ExampleBean,消除了應用程序(Test)與服務(ExampleBean)之間的耦合,實現(xiàn)了IOC(控制反轉)或者說實現(xiàn)了依賴的注射(Dependency Injection)。

    posted on 2006-02-24 20:53 都市淘沙者 閱讀(1807) 評論(0)  編輯  收藏 所屬分類: Spring+Struts+Hibernate

    主站蜘蛛池模板: 亚洲三级在线播放| 老司机精品免费视频| 亚洲 综合 国产 欧洲 丝袜| 羞羞视频免费网站在线看| 亚洲美女色在线欧洲美女| 国产成人免费a在线视频app | 亚洲人成网站色在线观看| yy6080久久亚洲精品| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲人成色77777在线观看| 国产亚洲免费的视频看| 免费无码又爽又刺激高潮的视频| 岛国岛国免费V片在线观看| 久久精品国产亚洲AV蜜臀色欲| 亚洲情侣偷拍精品| 免费电视剧在线观看| a视频免费在线观看| 亚洲av无码专区青青草原| 久久精品国产亚洲AV果冻传媒| 手机看片久久国产免费| 永久免费在线观看视频| 一级做a免费视频观看网站| 久久精品国产亚洲av麻豆蜜芽 | 在线观看永久免费| 亚洲GV天堂GV无码男同| 亚洲av不卡一区二区三区| 免费日本黄色网址| aa级一级天堂片免费观看| 免费福利电影在线观看| 美女视频黄频a免费大全视频| 亚洲国产成人九九综合| 国产亚洲免费的视频看| 亚洲情侣偷拍精品| 国产视频精品免费| 67194成是人免费无码| 亚洲电影在线免费观看| 久久国产免费一区二区三区 | 免费人成视频在线观看不卡| 岛国片在线免费观看| 日韩不卡免费视频| 国产精品怡红院永久免费|