Springのfactory-methodとfactory-bean使用

2091 ワード

Springでは、クラスが独自に設計され開発されている場合、注入に依存することで、コンテナがインタフェースと実装クラスの結合性を解除するのに役立ちます.しかし、開発でサードパーティ製クラスライブラリを使用し、その関連クラスをインスタンス化する必要がある場合は、インタフェースと実装クラスの結合性を回避するために、他の方法を使用する必要があります.
工場Beanと工場方法
一般的に、アプリケーションには独自のファクトリオブジェクトがあり、beanを作成します.アプリケーションのファクトリオブジェクトをSpring管理に渡すと、Spring管理は通常のbeanではなくファクトリBeanになります.
あるサードパーティ製ライブラリがIeatを発行したと仮定すると、インタフェースを使用するクライアントオブジェクトに後でIeat実装クラスの変動をマスクするために、ファクトリメソッド実装クラスEatFactoryも提供される.今、私たちは自分のアプリケーションでそれを使用したいと思っています.コードは以下の通りです.
public class EatFactory {
    public Ieat getInstance() {
        return new EatOrange();
    }
}

これは私たちの応用です.

public class Person {
    Ieat eat;
    
    public String eat(){
        return eat.eat();
    }

    public Ieat getEat() {
        return eat;
    }

    public void setEat(Ieat eat) {
        this.eat = eat;
    }
}

プロファイル

    
        
    






工場Beanと静的工場方法
工場クラスが静的な工場メソッドを提供してくれる場合は、プロファイルを少し変更します.
静的工場法
public class EatFactory {
    public static Ieat getInstance() {
        return new EatOrange();
    }
}

プロファイル

    
        
    





いくつかの工場メソッドにはいくつかのパラメータがあります.次に、Ieatをインスタンス化するにはパラメータnameが必要だと仮定します.この場合、次の方法で構成できます.
public class EatFactory {
    public static Ieat getInstance(String name) {
        return new EatOrange(name);
    }
}


    
          This is name