クラス JndiObjectFactoryBean
- 実装されたすべてのインターフェース:
Aware
、BeanClassLoaderAware
、BeanFactoryAware
、FactoryBean<ObjectSE>
、InitializingBean
FactoryBean
。Bean 参照用に JNDI で見つかったオブジェクトを公開します (たとえば、DataSource
SE の場合はデータアクセスオブジェクトの "dataSource" プロパティ)。典型的な使用箇所は、これをアプリケーションコンテキストでシングルトンファクトリ (たとえば、特定の JNDI バインド DataSource) として登録し、それを必要とするアプリケーションサービスに Bean 参照を提供することです。
デフォルトの動作では、起動時に JNDI オブジェクトを検索してキャッシュします。これは、JndiObjectTargetSource
を下位に使用して、"lookupOnStartup" および "cache" プロパティを通じてカスタマイズできます。実際の JNDI オブジェクト型は事前にわからないため、このようなシナリオでは "proxyInterface" を指定する必要があることに注意してください。
もちろん、Spring 環境の Bean クラスは、たとえば JNDI 自体から DataSource を検索できます。このクラスは、JNDI 名の集中構成と、JNDI 以外の代替への簡単な切り替えを可能にします。後者は、テストセットアップやスタンドアロンクライアントでの再利用などに特に便利です。
たとえば、DriverManagerDataSource への切り替えは単なる構成の問題であることに注意してください。この FactoryBean の定義を DriverManagerDataSource
の定義に置き換えるだけです。
- 導入:
- 22.05.2003
- 作成者:
- Juergen Hoeller
- 関連事項:
フィールドサマリー
クラス org.springframework.jndi.JndiLocatorSupport から継承されたフィールド
CONTAINER_PREFIX
クラス org.springframework.jndi.JndiAccessor から継承されたフィールド
logger
インターフェース org.springframework.beans.factory.FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTE
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明void
JNDI オブジェクトを検索して保存します。protected ClassSE<?>
createCompositeInterface
(ClassSE<?>[] interfaces) 指定されたインターフェースの複合インターフェースクラスを作成し、指定されたインターフェースを 1 つの単一クラスに実装します。シングルトン JNDI オブジェクトを返します。ClassSE<?>
この FactoryBean が作成するオブジェクトの型、または事前に不明な場合はnull
を返します。boolean
このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()
は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?protected ObjectSE
ルックアップが失敗した場合に指定された "defaultObject" (存在する場合) を返すルックアップバリアント。void
setBeanClassLoader
(ClassLoaderSE classLoader) Beanclass loader
SE を Bean インスタンスに提供するコールバック。void
setBeanFactory
(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。void
setCache
(boolean cache) 見つかった JNDI オブジェクトをキャッシュするかどうかを設定します。void
setDefaultObject
(ObjectSE defaultObject) JNDI ルックアップが失敗した場合にフォールバックするデフォルトオブジェクトを指定します。void
setExposeAccessContext
(boolean exposeAccessContext) ターゲットオブジェクトへのすべてのアクセスに対して JNDI 環境コンテキストを公開するかどうかを設定します。void
setLookupOnStartup
(boolean lookupOnStartup) 起動時に JNDI オブジェクトを検索するかどうかを設定します。void
setProxyInterface
(ClassSE<?> proxyInterface) JNDI オブジェクトに使用するプロキシインターフェースを指定します。void
setProxyInterfaces
(ClassSE<?>... proxyInterfaces) JNDI オブジェクトに使用する複数のプロキシインターフェースを指定します。クラス org.springframework.jndi.JndiObjectLocator から継承されたメソッド
getExpectedType, getJndiName, lookup, setExpectedType, setJndiName
クラス org.springframework.jndi.JndiLocatorSupport から継承されたメソッド
convertJndiName, isResourceRef, lookup, lookup, setResourceRef
クラス org.springframework.jndi.JndiAccessor から継承されたメソッド
getJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplate
コンストラクターの詳細
JndiObjectFactoryBean
public JndiObjectFactoryBean()
メソッドの詳細
setProxyInterface
JNDI オブジェクトに使用するプロキシインターフェースを指定します。通常、"lookupOnStartup" = false および / または "cache" = false と組み合わせて使用されます。遅延ルックアップの場合、実際の JNDI オブジェクト型は事前にわからないため、指定する必要があります。
setProxyInterfaces
JNDI オブジェクトに使用する複数のプロキシインターフェースを指定します。通常、"lookupOnStartup" =false および / または "cache" =false と組み合わせて使用されます。必要に応じて、プロキシインターフェースは指定された "expectedType" から自動検出されることに注意してください。
setLookupOnStartup
public void setLookupOnStartup(boolean lookupOnStartup) 起動時に JNDI オブジェクトを検索するかどうかを設定します。デフォルトは "true" です。JNDI オブジェクトの遅い可用性を可能にするためにオフにすることができます。この場合、JNDI オブジェクトは最初のアクセスでフェッチされます。
遅延検索の場合、プロキシインターフェースを指定する必要があります。
setCache
public void setCache(boolean cache) 見つかった JNDI オブジェクトをキャッシュするかどうかを設定します。デフォルトは "true" です。JNDI オブジェクトのホット再デプロイメントを可能にするためにオフにすることができます。この場合、JNDI オブジェクトは呼び出しごとにフェッチされます。
ホット再デプロイメントの場合、プロキシインターフェースを指定する必要があります。
setExposeAccessContext
public void setExposeAccessContext(boolean exposeAccessContext) ターゲットオブジェクトへのすべてのアクセス、つまり公開されたオブジェクト参照でのすべてのメソッド呼び出しについて、JNDI 環境コンテキストを公開するかどうかを設定します。デフォルトは "false" です。つまり、オブジェクト検索の JNDI コンテキストのみを公開します。このフラグを "true" に切り替えると、認証要件を持つ JNDI 取得ファクトリ (JDBC DataSource、JMS ConnectionFactory など) の WebLogic で必要な、メソッド呼び出しごとに JNDI 環境 (認証コンテキストを含む) が公開されます。
setDefaultObject
JNDI ルックアップが失敗した場合にフォールバックするデフォルトオブジェクトを指定します。デフォルトはなしです。これは、任意の Bean 参照またはリテラル値にすることができます。これは通常、JNDI 環境が特定の構成設定を定義する可能性があるが、それらが存在する必要がないシナリオで、リテラル値に使用されます。
メモ: これは、起動時のルックアップでのみサポートされています。
JndiObjectLocator.setExpectedType(java.lang.Class<?>)
と一緒に指定する場合、指定した値はその型であるか、その型に変換可能である必要があります。setBeanFactory
インターフェースからコピーされた説明:BeanFactoryAware
所有ファクトリを Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()
またはカスタム init-method などの初期化コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanFactoryAware
のsetBeanFactory
- パラメーター:
beanFactory
- 所有 BeanFactory(非null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。- 関連事項:
setBeanClassLoader
インターフェースからコピーされた説明:BeanClassLoaderAware
Beanclass loader
SE を Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean's
InitializingBean.afterPropertiesSet()
メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanClassLoaderAware
のsetBeanClassLoader
- パラメーター:
classLoader
- 所有クラスローダー
afterPropertiesSet
JNDI オブジェクトを検索して保存します。- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
- オーバーライド:
- クラス
JndiObjectLocator
のafterPropertiesSet
- 例外:
IllegalArgumentExceptionSE
NamingExceptionSE
lookupWithFallback
ルックアップが失敗した場合に指定された "defaultObject" (存在する場合) を返すルックアップバリアント。- 戻り値:
- 見つかったオブジェクト、またはフォールバックとして "defaultObject"
- 例外:
NamingExceptionSE
- フォールバックなしでルックアップが失敗した場合- 関連事項:
getObject
シングルトン JNDI オブジェクトを返します。- 次で指定:
- インターフェース
FactoryBean<ObjectSE>
のgetObject
- 戻り値:
- Bean のインスタンス (
null
にすることができます) - 関連事項:
getObjectType
インターフェースからコピーされた説明:FactoryBean
この FactoryBean が作成するオブジェクトの型、または事前に不明な場合はnull
を返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成する実装の場合、このメソッドはシングルトンの作成を可能な限り回避し、事前に型を推定する必要があります。プロトタイプの場合は、ここで意味のある型を返すことも推奨されます。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで
null
を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。- 次で指定:
- インターフェース
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
- 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項:
createCompositeInterface
指定されたインターフェースの複合インターフェースクラスを作成し、指定されたインターフェースを 1 つの単一クラスに実装します。デフォルトの実装は、指定されたインターフェースの JDK プロキシクラスを構築します。
- パラメーター:
interfaces
- マージするインターフェース- 戻り値:
- クラスとしてマージされたインターフェース
- 関連事項: