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