クラス MethodInvokingFactoryBean
- 実装されたすべてのインターフェース:
Aware
、BeanClassLoaderAware
、BeanFactoryAware
、FactoryBean<ObjectSE>
、InitializingBean
FactoryBean
。ほとんどのユースケースでは、同じ目的のためにコンテナーの組み込みのファクトリメソッドサポートを使用する方が適切です。これは、引数の変換がよりスマートです。このファクトリ Bean は、値を返さないメソッド(たとえば、ある種の初期化を強制する静的クラスメソッド)を呼び出す必要がある場合にも役立ちます。Bean インスタンスを取得するには戻り値が必要なため、このユースケースはファクトリメソッドではサポートされていません。 ファクトリメソッドへのアクセスに主に使用されることが予想されるため、このファクトリはデフォルトでシングルトン方式で動作することに注意してください。所有する Bean ファクトリによる getObject()
への最初のリクエストにより、メソッドが呼び出され、その戻り値は後続のリクエストのためにキャッシュされます。内部 singleton
プロパティを "false" に設定すると、このファクトリは、オブジェクトをリクエストされるたびにターゲットメソッドを呼び出すことができます。
NOTE: ターゲットメソッドが公開する結果を生成しない場合は、代わりに MethodInvokingBean
を検討してください。これにより、この MethodInvokingFactoryBean
に伴う型の決定とライフサイクルの制限が回避されます。
この呼び出し元は、あらゆる種類のターゲットメソッドをサポートします。静的メソッドを指定するには、targetMethod
プロパティを静的メソッド名を表す文字列に設定します。targetClass
は、静的メソッドが定義されているクラスを指定します。または、targetObject
プロパティをターゲットオブジェクトとして設定し、targetMethod
プロパティをそのターゲットオブジェクトで呼び出すメソッドの名前として設定することにより、ターゲットインスタンスメソッドを指定できます。メソッド呼び出しの引数は、arguments
プロパティを設定することで指定できます。
このクラスは、InitializingBean 契約に従ってすべてのプロパティが設定された後に呼び出される afterPropertiesSet()
に依存しています。
このクラスを使用して静的ファクトリメソッドを呼び出す Bean 定義の例(XML ベースの Bean ファクトリ定義で):
<bean id="myObject" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="staticMethod" value="com.whatever.MyClassFactory.getInstance"/> </bean>
静的メソッドを呼び出してインスタンスメソッドを呼び出し、Java システムプロパティを取得する例。やや冗長ですが、機能します。
<bean id="sysProps" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="java.lang.System"/> <property name="targetMethod" value="getProperties"/> </bean> <bean id="javaVersion" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" ref="sysProps"/> <property name="targetMethod" value="getProperty"/> <property name="arguments" value="java.version"/> </bean>
- 導入:
- 21.11.2003
- 作成者:
- Colin Sampaleanu, Juergen Hoeller
- 関連事項:
フィールドサマリー
クラス org.springframework.util.MethodInvoker から継承されたフィールド
targetClass
インターフェース org.springframework.beans.factory.FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTE
コンストラクターのサマリー
コンストラクター方法の概要
修飾子と型メソッド説明void
singleton プロパティが "true" に設定されている場合は毎回同じ値を返し、そうでない場合は指定されたメソッドをその場で呼び出して返された値を返します。ClassSE<?>
この FactoryBean が作成するオブジェクトの型、または事前に不明な場合はnull
を返します。boolean
このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()
は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?void
setSingleton
(boolean singleton) シングルトンを作成するかどうかを設定します。それ以外の場合は、各getObject()
リクエストで新しいオブジェクトを作成します。クラス org.springframework.beans.factory.config.MethodInvokingBean から継承されたメソッド
getDefaultTypeConverter, invokeWithTargetException, resolveClassName, setBeanClassLoader, setBeanFactory
クラス org.springframework.beans.support.ArgumentConvertingMethodInvoker から継承されたメソッド
doFindMatchingMethod, findMatchingMethod, getTypeConverter, registerCustomEditor, setTypeConverter
クラス org.springframework.util.MethodInvoker から継承されたメソッド
getArguments, getPreparedMethod, getTargetClass, getTargetMethod, getTargetObject, getTypeDifferenceWeight, invoke, isPrepared, prepare, setArguments, setStaticMethod, setTargetClass, setTargetMethod, setTargetObject
コンストラクターの詳細
MethodInvokingFactoryBean
public MethodInvokingFactoryBean()
メソッドの詳細
setSingleton
public void setSingleton(boolean singleton) シングルトンを作成するかどうかを設定します。それ以外の場合は、各getObject()
リクエストで新しいオブジェクトを作成します。デフォルトは "true" です。afterPropertiesSet
インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
- オーバーライド:
- クラス
MethodInvokingBean
のafterPropertiesSet
- 例外:
ExceptionSE
- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合
getObject
singleton プロパティが "true" に設定されている場合は毎回同じ値を返し、そうでない場合は指定されたメソッドをその場で呼び出して返された値を返します。- 次で指定:
- インターフェース
FactoryBean<ObjectSE>
のgetObject
- 戻り値:
- Bean のインスタンス (
null
にすることができます) - 例外:
ExceptionSE
- 作成エラーの場合- 関連事項:
getObjectType
この FactoryBean が作成するオブジェクトの型、または事前に不明な場合はnull
を返します。- 次で指定:
- インターフェース
FactoryBean<ObjectSE>
のgetObjectType
- 戻り値:
- この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は
null
- 関連事項:
isSingleton
public boolean isSingleton()インターフェースからコピーされた説明:FactoryBean
このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()
は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?注意 : FactoryBean がシングルトンオブジェクトを保持していることを示している場合、
getObject()
から返されたオブジェクトは、所有する BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true
を返さないでください。FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 :
false
を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張SmartFactoryBean
インターフェースの実装は、SmartFactoryBean.isPrototype()
メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンなFactoryBean
実装は、isSingleton()
実装がfalse
を返す場合、常に独立したインスタンスを返すと単純に想定されます。FactoryBean
は通常シングルトンインスタンスを管理するため、デフォルトの実装ではtrue
が返されます。- 次で指定:
- インターフェース
FactoryBean<ObjectSE>
のisSingleton
- 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項: