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