天天看點

spring之ioc (控制反轉)

IOC(控制反轉:Inverse of Control ),又稱作 依賴注入,是一種重要的面向對象程式設計的法則來削減計算機程

序的耦合問題。

執行個體分析如下:

兩個類:ZhangSan.java和Lisi.java

package com.java1234.service;

public class ZhangSan implements Tester{

    public void test(){

        System.out.println("張三幹活");

    }

}

package com.java1234.service;

public class Lisi implements Tester{

    public void test(){

        System.out.println("李四幹活");

    }

}

JavaWork類

package com.java1234.service;

public class JavaWork {

    public void doTest(){

         Lisi lisi=new LiSi();

        lisi.test();

    }

}

Test類     

package com.java1234.test;

import com.java1234.service.JavaWork;

import com.java1234.service.Lisi;

public class Test {

    public static void main(String[] args) {

        javaWork.doTest();

    }

}

//現在是張三和李四兩個類和JavaWork類耦合度太高,由JavaWork控制張三和李四

使用控制反轉,把控制張三和李四的權從JavaWork.java變成Test.java

JavaWork.java

package com.java1234.service;

public class JavaWork {

    private Tester tester;

    public void setTester(Tester tester) {

        this.tester = tester;

    }

    public void doTest(){

        tester.test();

    }

}

beans.xml

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

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

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

    <bean id="zhangsan" class="com.java1234.service.ZhangSan"></bean>

    <bean id="lisi" class="com.java1234.service.Lisi"></bean>

     //spring會把JavaWork中的屬性tester的值通過set方法設定為lisi   (依賴注入)

    <bean id="javaWork" class="com.java1234.service.JavaWork">

        <property name="tester" ref="lisi"></property>

    </bean>

</beans>