<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

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    Spring中IOC的實現 (轉)


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

    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已經稱為框架設計中必不可少的部分。就實現上來講Spring采取了配置文件的形式來實現依賴的注射,并且支持Type2 IOCSetter Injection)以及Type3 IOCConstructor Injection)。

         SpringIOC的實現的核心是其Core Bean Factory,它將框架內部的組件以一定的耦合度組裝起來,并對使用它的應用提供一種面向服務的編程模式(SOPService-Orient Programming),比如Spring中的AOP、以及持久化(Hibernateibatics)的實現。
        首先從最底層最基礎的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插件來輕松實現。

    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)之間的耦合,實現了IOC(控制反轉)或者說實現了依賴的注射(Dependency Injection)。

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

    主站蜘蛛池模板: 中文字幕在线观看亚洲日韩| 国产免费人成视频在线观看| 亚洲成AV人片在线观看ww| 色一情一乱一伦一视频免费看| 无人在线观看免费高清视频 | 国产亚洲人成网站在线观看| 亚洲精品无码国产片| 成人毛片免费观看视频在线| 亚洲中文字幕无码亚洲成A人片| 免费一本色道久久一区| 久久久久久亚洲精品影院| 午夜dj在线观看免费视频| 国产亚洲人成在线播放| 亚洲av无码国产精品色在线看不卡 | 国产白丝无码免费视频| 亚洲视频在线观看不卡| 免费h片在线观看网址最新| 亚洲人精品亚洲人成在线| 最近最新的免费中文字幕| 欧洲亚洲综合一区二区三区| 亚洲国产综合人成综合网站| 一个人免费观看视频在线中文 | 中文字幕无码精品亚洲资源网| 久久免费香蕉视频| 亚洲黄色片免费看| 最新猫咪www免费人成| 老妇激情毛片免费| 亚洲AV无码乱码国产麻豆| 亚洲免费一级视频| jizzjizz亚洲日本少妇| 国产亚洲精品无码专区| 最好看最新的中文字幕免费 | www永久免费视频| 亚洲国产高清在线| 成熟女人特级毛片www免费| 无码 免费 国产在线观看91| 久久久综合亚洲色一区二区三区| 中文字幕乱码免费视频| 九九免费久久这里有精品23| 久久亚洲精品无码AV红樱桃| 国产一区二区三区在线观看免费|