public class SimpleJndiBeanFactory extends JndiLocatorSupport implements BeanFactory
BeanFactory
インターフェースの単純な JNDI ベースの実装。Bean 定義の列挙をサポートしないため、ListableBeanFactory
インターフェースを実装しません。 このファクトリは、指定された Bean 名を、Java EE アプリケーションの "java:comp/env/" 名前空間内の JNDI 名として解決します。取得したすべてのオブジェクトの解決された型をキャッシュし、オプションで共有可能オブジェクトもキャッシュします(明示的に shareable resource
としてマークされている場合)。
このファクトリの主な目的は、Spring の CommonAnnotationBeanPostProcessor
と組み合わせて使用することであり、中間 Bean 定義のない JNDI オブジェクトとして @Resource
アノテーションを解決するために "resourceFactory" として構成されます。もちろん、特に BeanFactory スタイルの型チェックが必要な場合は、同様のルックアップシナリオにも使用できます。
DefaultListableBeanFactory
, CommonAnnotationBeanPostProcessor
CONTAINER_PREFIX
logger
FACTORY_BEAN_PREFIX
コンストラクターと説明 |
---|
SimpleJndiBeanFactory() |
修飾子と型 | メソッドと説明 |
---|---|
void | addShareableResource(StringSE shareableResource) このファクトリが取得後にキャッシュできる、共有可能な JNDI リソースの名前を追加します。 |
boolean | containsBean(StringSE name) この Bean ファクトリには、指定された名前の Bean 定義または外部登録されたシングルトンインスタンスが含まれているか判定します。 |
StringSE[] | getAliases(StringSE name) 存在する場合、指定された Bean 名のエイリアスを返します。 |
<T> T | getBean(ClassSE<T> requiredType) 指定されたオブジェクト型が存在する場合、一意に一致する Bean インスタンスを返します。 |
<T> T | getBean(ClassSE<T> requiredType, ObjectSE... args) 指定された Bean のインスタンス(共有または独立)を返します。 |
ObjectSE | getBean(StringSE name) 指定された Bean のインスタンス(共有または独立)を返します。 |
<T> T | getBean(StringSE name, ClassSE<T> requiredType) 指定された Bean のインスタンス(共有または独立)を返します。 |
ObjectSE | getBean(StringSE name, ObjectSE... args) 指定された Bean のインスタンス(共有または独立)を返します。 |
<T> ObjectProvider<T> | getBeanProvider(ClassSE<T> requiredType) 指定された Bean のプロバイダーを返します。これにより、可用性および一意性オプションを含め、インスタンスの遅延オンデマンド取得が可能になります。 |
<T> ObjectProvider<T> | getBeanProvider(ResolvableType requiredType) 指定された Bean のプロバイダーを返します。これにより、可用性および一意性オプションを含め、インスタンスの遅延オンデマンド取得が可能になります。 |
ClassSE<?> | getType(StringSE name) 指定された名前の Bean の型を判別します。 |
ClassSE<?> | getType(StringSE name, boolean allowFactoryBeanInit) 指定された名前の Bean の型を判別します。 |
boolean | isPrototype(StringSE name) この Bean はプロトタイプですか? つまり、 BeanFactory.getBean(java.lang.String) は常に独立したインスタンスを返しますか? |
boolean | isSingleton(StringSE name) この Bean は共有シングルトンですか? つまり、 BeanFactory.getBean(java.lang.String) は常に同じインスタンスを返しますか? |
boolean | isTypeMatch(StringSE name, ClassSE<?> typeToMatch) 指定された名前の Bean が指定された型と一致するかどうかを確認します。 |
boolean | isTypeMatch(StringSE name, ResolvableType typeToMatch) 指定された名前の Bean が指定された型と一致するかどうかを確認します。 |
void | setShareableResources(StringSE... shareableResources) このファクトリが取得後にキャッシュできる、共有可能な JNDI リソースの名前のリストを設定します。 |
convertJndiName, isResourceRef, lookup, lookup, setResourceRef
getJndiEnvironment, getJndiTemplate, setJndiEnvironment, setJndiTemplate
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void addShareableResource(StringSE shareableResource)
shareableResource
- JNDI 名 (通常は "java:comp/env/" 名前空間内)public void setShareableResources(StringSE... shareableResources)
shareableResources
- JNDI 名 (通常は "java:comp/env/" 名前空間内)public ObjectSE getBean(StringSE name) throws BeansException
BeanFactory
この方法では、Spring BeanFactory をシングルトンまたはプロトタイプの設計パターンの代わりとして使用できます。シングルトン Bean の場合、呼び出し元は返されたオブジェクトへの参照を保持できます。
エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の getBean
name
- 取得する Bean の名前 NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeansException
- Bean を取得できなかった場合 public <T> T getBean(StringSE name, ClassSE<T> requiredType) throws BeansException
BeanFactory
BeanFactory.getBean(String)
と同じように動作しますが、Bean が必要な型でない場合は BeanNotOfRequiredTypeException をスローすることにより、型安全の基準を提供します。これは、BeanFactory.getBean(String)
で発生する可能性があるように、結果を正しくキャストすると ClassCastException がスローされないことを意味します。
エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の getBean
name
- 取得する Bean の名前 requiredType
- Bean が一致する必要があることを入力します。インターフェースまたはスーパークラスにすることができます NoSuchBeanDefinitionException
- そのような Bean 定義がない場合 BeanNotOfRequiredTypeException
- Bean が必要な型でない場合 BeansException
- Bean を作成できなかった場合 public ObjectSE getBean(StringSE name, @Nullable ObjectSE... args) throws BeansException
BeanFactory
Bean 定義で指定されたデフォルト引数(存在する場合)をオーバーライドして、明示的なコンストラクター引数 / ファクトリメソッド引数を指定できます。
BeanFactory
の getBean
name
- 取得する Bean の名前 args
- 明示的な引数を使用して Bean インスタンスを作成するときに使用する引数 (既存のインスタンスを取得するのではなく、新しいインスタンスを作成するときにのみ適用されます)NoSuchBeanDefinitionException
- そのような Bean 定義がない場合 BeanDefinitionStoreException
- 引数は指定されているが、影響を受ける Bean がプロトタイプではない場合 BeansException
- Bean を作成できなかった場合 public <T> T getBean(ClassSE<T> requiredType) throws BeansException
BeanFactory
このメソッドは、ListableBeanFactory
の型別ルックアップ領域に入りますが、指定された型の名前に基づいた従来の名前別ルックアップにも変換できます。Bean のセット全体でより広範な検索操作を行うには、ListableBeanFactory
または BeanFactoryUtils
(あるいはその両方)を使用します。
BeanFactory
の getBean
requiredType
- Bean が一致する必要があることを入力します。インターフェースまたはスーパークラスにすることができます NoSuchBeanDefinitionException
- 指定された型の Bean が見つからなかった場合 NoUniqueBeanDefinitionException
- 指定された型の複数の Bean が見つかった場合 BeansException
- Bean を作成できなかった場合 ListableBeanFactory
public <T> T getBean(ClassSE<T> requiredType, @Nullable ObjectSE... args) throws BeansException
BeanFactory
Bean 定義で指定されたデフォルト引数(存在する場合)をオーバーライドして、明示的なコンストラクター引数 / ファクトリメソッド引数を指定できます。
このメソッドは、ListableBeanFactory
の型別ルックアップ領域に入りますが、指定された型の名前に基づいた従来の名前別ルックアップにも変換できます。Bean のセット全体でより広範な検索操作を行うには、ListableBeanFactory
または BeanFactoryUtils
(あるいはその両方)を使用します。
BeanFactory
の getBean
requiredType
- Bean が一致する必要があることを入力します。インターフェースまたはスーパークラスにすることができます args
- 明示的な引数を使用して Bean インスタンスを作成するときに使用する引数 (既存のインスタンスを取得するのではなく、新しいインスタンスを作成するときにのみ適用されます)NoSuchBeanDefinitionException
- そのような Bean 定義がない場合 BeanDefinitionStoreException
- 引数は指定されているが、影響を受ける Bean がプロトタイプではない場合 BeansException
- Bean を作成できなかった場合 public <T> ObjectProvider<T> getBeanProvider(ClassSE<T> requiredType)
BeanFactory
ジェネリクス型を照合するには、BeanFactory.getBeanProvider(ResolvableType)
を検討してください。
BeanFactory
の getBeanProvider
requiredType
- Bean が一致する必要があることを入力します。インターフェースまたはスーパークラスにすることができます BeanFactory.getBeanProvider(ResolvableType)
public <T> ObjectProvider<T> getBeanProvider(ResolvableType requiredType)
BeanFactory
リフレクティブインジェクションポイントとは対照的に、ここでは Bean のコレクションはサポートされていないことに注意してください。特定の型に一致する Bean のリストをプログラムで取得するには、ここで引数として実際の Bean 型を指定し、その後 ObjectProvider.orderedStream()
またはその遅延ストリーミング / 反復オプションを使用します。
また、Java の割り当て規則に従って、ジェネリクスのマッチングはここでは厳密です。未チェックのセマンティクス(「未チェック」の Java コンパイラー警告と同様)を使用した寛大なフォールバックマッチングの場合、このバリアントとの完全な汎用一致が available
でない場合は、2 番目のステップとして raw 型を使用して BeanFactory.getBeanProvider(Class)
を呼び出すことを検討してください。
BeanFactory
の getBeanProvider
requiredType
- Bean が一致する必要があると入力します。ジェネリクス型宣言にすることができます ObjectProvider.iterator()
, ObjectProvider.stream()
, ObjectProvider.orderedStream()
public boolean containsBean(StringSE name)
BeanFactory
指定された名前がエイリアスの場合、対応する正規の Bean 名に変換されます。
このファクトリが階層的である場合、このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに問い合わせます。
指定された名前に一致する Bean 定義またはシングルトンインスタンスが見つかった場合、このメソッドは、名前付き Bean 定義がスコープ内で具体的または抽象的、遅延または先行であるかどうかにかかわらず、true
を返します。このメソッドからの true
戻り値は、必ずしも BeanFactory.getBean(java.lang.String)
が同じ名前のインスタンスを取得できることを示しているわけではないことに注意してください。
BeanFactory
の containsBean
name
- 照会する Bean の名前 public boolean isSingleton(StringSE name) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
は常に同じインスタンスを返しますか? メモ: false
を返すこのメソッドは、独立したインスタンスを明確に示していません。これは、スコープが設定された Bean にも対応している可能性がある非シングルトンインスタンスを示します。BeanFactory.isPrototype(java.lang.String)
操作を使用して、独立したインスタンスを明示的にチェックします。
エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の isSingleton
name
- 照会する Bean の名前 NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.isPrototype(java.lang.String)
public boolean isPrototype(StringSE name) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
は常に独立したインスタンスを返しますか? メモ: false
を返すこのメソッドは、シングルトンオブジェクトを明確に示していません。これは独立したインスタンスを示し、スコープ付き Bean にも対応する場合があります。BeanFactory.isSingleton(java.lang.String)
操作を使用して、共有シングルトンインスタンスを明示的に確認します。
エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の isPrototype
name
- 照会する Bean の名前 NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.isSingleton(java.lang.String)
public boolean isTypeMatch(StringSE name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
呼び出しが、指定されたターゲット型に割り当て可能なオブジェクトを返すかどうかを確認します。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の isTypeMatch
name
- 照会する Bean の名前 typeToMatch
- 照合する型 (ResolvableType
として)true
、一致しないかまだ判別できない場合は false
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.getType(java.lang.String)
public boolean isTypeMatch(StringSE name, @Nullable ClassSE<?> typeToMatch) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
呼び出しが、指定されたターゲット型に割り当て可能なオブジェクトを返すかどうかを確認します。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の isTypeMatch
name
- 照会する Bean の名前 typeToMatch
- 照合する型 (Class
として)true
、一致しないかまだ判別できない場合は false
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.getType(java.lang.String)
@Nullable public ClassSE<?> getType(StringSE name) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
が返すオブジェクトの型を決定します。FactoryBean
の場合は、FactoryBean.getObjectType()
によって公開されている、FactoryBean が作成するオブジェクトの型を返します。これにより、以前に初期化されていない FactoryBean
(BeanFactory.getType(String, boolean)
を参照)が初期化される可能性があります。
エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の getType
name
- 照会する Bean の名前 null
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.isTypeMatch(java.lang.String, org.springframework.core.ResolvableType)
@Nullable public ClassSE<?> getType(StringSE name, boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
が返すオブジェクトの型を決定します。FactoryBean
の場合は、FactoryBean.getObjectType()
によって公開されている、FactoryBean が作成するオブジェクトの型を返します。allowFactoryBeanInit
フラグによっては、初期の型情報が利用できない場合、以前に初期化されていない FactoryBean
が初期化される可能性があります。
エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の getType
name
- 照会する Bean の名前 allowFactoryBeanInit
- FactoryBean
がオブジェクト型を判別する目的でのみ初期化されるかどうか null
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.isTypeMatch(java.lang.String, org.springframework.core.ResolvableType)
public StringSE[] getAliases(StringSE name)
BeanFactory
これらのエイリアスはすべて、BeanFactory.getBean(java.lang.String)
呼び出しで使用される場合、同じ Bean を指します。
指定された名前がエイリアスの場合、対応する元の Bean 名と他のエイリアス(存在する場合)が返され、元の Bean 名が配列の最初の要素になります。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の getAliases
name
- エイリアスをチェックする Bean 名 BeanFactory.getBean(java.lang.String)