瞭解 Spring 如何管理依賴關係

讓我編寫一段顯示完全鬆散耦合的程式碼,然後你可以輕鬆瞭解 Spring 核心如何在內部管理依賴項。考慮一個場景,線上業務 Flipkart 就在那裡,它使用 DTDC 或 Blue Dart 快遞服務,所以讓我設計一個顯示完全鬆散耦合的應用程式。Eclipse 目錄作為休閒:

https://i.stack.imgur.com/LEJqC.jpg

//Interface
package com.sdp.component;

public interface Courier {
    public String deliver(String iteams,String address);

}

//實現類

  package com.sdp.component;

public class BlueDart implements Courier {

    
    public String deliver(String iteams, String address) {
        
        return iteams+ "Shiped to Address "+address +"Through BlueDart";
    }

}

package com.sdp.component;

public class Dtdc implements Courier {

    
    public String deliver(String iteams, String address) {
        return iteams+ "Shiped to Address "+address +"Through Dtdc";    }

}

//元件 classe

package com.sdp.service;

import com.sdp.component.Courier;

public class FlipKart {
    private Courier courier;

    public void setCourier(Courier courier) {
        this.courier = courier;
    }
    public void shopping(String iteams,String address)
    {
        String status=courier.deliver(iteams, address);
        System.out.println(status);
    }

}

//用於建立和返回 Object 的工廠類

package com.sdp.util;

import java.io.IOException;
import java.util.Properties;

import com.sdp.component.Courier;

public class ObjectFactory {
private static Properties props;
static{
    
    props=new Properties();
    try {
        props.load(ObjectFactory.class.getClassLoader().getResourceAsStream("com//sdp//common//app.properties"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
}
public static Object getInstance(String logicalclassName)
{
    Object obj = null;
    String originalclassName=props.getProperty(logicalclassName);
    try {
         obj=Class.forName(originalclassName).newInstance();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return obj;
}
    
    }

//屬性檔案

BlueDart.class=com.sdp.component.BlueDart
Dtdc.class=com.sdp.component.Dtdc
FlipKart.class=com.sdp.service.FlipKart

//測試類

package com.sdp.test;

import com.sdp.component.Courier;
import com.sdp.service.FlipKart;
import com.sdp.util.ObjectFactory;

public class FlipKartTest {
    public static void main(String[] args) {
        Courier courier=(Courier)ObjectFactory.getInstance("Dtdc.class");
        FlipKart flipkart=(FlipKart)ObjectFactory.getInstance("FlipKart.class");
        flipkart.setCourier(courier);
        flipkart.shopping("Hp Laptop", "SR Nagar,Hyderabad");
        
    }

}

如果我們編寫這段程式碼,那麼我們可以手動實現鬆散耦合,如果所有類都需要 BlueDart 或 Dtdc,這是適用的。但是如果某些類想要 BlueDart 而其他一些類想要 Dtdc 那麼它將再次緊密耦合,所以我們而不是我們建立和管理依賴注入 Spring 核心負責建立和管理 bean,希望這將有所幫助,在下一個例子中,我們將看到 Spring 核心上的!st 應用程式與 deitals