Springのfactory-methodとfactory-bean使用
2091 ワード
Springでは、クラスが独自に設計され開発されている場合、注入に依存することで、コンテナがインタフェースと実装クラスの結合性を解除するのに役立ちます.しかし、開発でサードパーティ製クラスライブラリを使用し、その関連クラスをインスタンス化する必要がある場合は、インタフェースと実装クラスの結合性を回避するために、他の方法を使用する必要があります.
工場Beanと工場方法
一般的に、アプリケーションには独自のファクトリオブジェクトがあり、beanを作成します.アプリケーションのファクトリオブジェクトをSpring管理に渡すと、Spring管理は通常のbeanではなくファクトリBeanになります.
あるサードパーティ製ライブラリがIeatを発行したと仮定すると、インタフェースを使用するクライアントオブジェクトに後でIeat実装クラスの変動をマスクするために、ファクトリメソッド実装クラスEatFactoryも提供される.今、私たちは自分のアプリケーションでそれを使用したいと思っています.コードは以下の通りです.
これは私たちの応用です.
プロファイル
工場Beanと静的工場方法
工場クラスが静的な工場メソッドを提供してくれる場合は、プロファイルを少し変更します.
静的工場法
プロファイル
いくつかの工場メソッドにはいくつかのパラメータがあります.次に、Ieatをインスタンス化するにはパラメータnameが必要だと仮定します.この場合、次の方法で構成できます.
工場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