サーチ…


Spring Core入門

Springは膨大なフレームワークなので、Springのフレームワークはいくつかのモジュールに分割されており、Springを軽量化しています。いくつかの重要なモジュールは次のとおりです。

  1. スプリングコア
  2. 春AOP
  3. Spring JDBC
  4. 春の取引
  5. スプリングORM
  6. Spring MVC

Springのすべてのモジュールは、Spring Coreを除いて互いに独立しています。 Springのコアは基本モジュールなので、すべてのモジュールでSpring Coreを使用する必要があります

スプリングコア

Spring Coreが依存関係管理について話しています。つまり、Springに提供された任意のクラスがSpringに提供され、Springが依存関係を管理できる場合です。

依存関係とは何ですか?
プロジェクトの観点から見ると、プロジェクトやアプリケーションでは、異なる機能を持つ複数のクラスが存在します。各クラスは他のクラスのいくつかの機能を必要としていました。

例:

class Engine {

  public void start() {
    System.out.println("Engine started");
  }    
}

class Car {

  public void move() {
    // For moving start() method of engine class is required
  }
}

ここでクラスエンジンはクラスエンジンで必要とされるので、クラスエンジンはクラスカーに依存していると言うことができます。継承による依存関係の管理や、フォローとしてのオブジェクトの作成ではありません。

継承によって:

class Engine {

  public void start() {
    System.out.println("Engine started");
  }
}

class Car extends Engine {

  public void move() {
    start(); //Calling super class start method,
  }
}

依存クラスのオブジェクトを作成することによって:

class Engine {

  public void start() {
    System.out.println("Engine started");
  }    
}

class Car {

  Engine eng = new Engine();
 
  public void move() {
   eng.start();
  }
}

したがって、クラス間の依存関係を管理する代わりに、Spring Coreは責任依存管理を行います。しかし、いくつかのルールがあります、クラスは戦略設計パターンであるいくつかの設計手法で設計されなければなりません。

Springが依存関係を管理する方法の理解

完全に緩やかに結合されていることを示すコードを書いてみましょう。そして、Springコアがどのように内部で依存関係を管理するのかを簡単に理解できます。シナリオを考えてみましょう。オンラインビジネスのFlipkartはそこにあり、DTDCやBlue Dartの宅配サービスを何度か使用していますので、完全に疎結合していることを示すアプリケーションを設計しましょう。 Eclipseディレクトリのフォールバック:

ここに画像の説明を入力

//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";    }

}

//コンポーネントクラッセ

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);
    }

}

//オブジェクトを作成して返すファクトリクラス

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コアの!



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow