瞭解 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