クラス AutowiredAnnotationBeanPostProcessor
- 実装されているすべてのインターフェース:
BeanRegistrationAotProcessor, Aware, BeanFactoryAware, BeanPostProcessor, InstantiationAwareBeanPostProcessor, SmartInstantiationAwareBeanPostProcessor, MergedBeanDefinitionPostProcessor, Ordered, PriorityOrdered
BeanPostProcessor 実装。挿入されるそのようなメンバーは、アノテーションによって検出されます。デフォルトでは、Spring の @Autowired および @Value アノテーションです。 また、利用可能な場合は、Spring 独自の @Autowired の直接的な代替として、共通の @Inject アノテーションもサポートします。
オートワイヤーコンストラクター
任意の所与の Bean クラスの唯一のコンストラクターは Spring Bean として使用される場合 autowire にコンストラクターを示す true に 'required' 属性セットでこのアノテーションを宣言することができます。さらに、'required' 属性が true に設定されている場合、単一のコンストラクターのみに @Autowired のアノテーションを付けることができます。複数の不要なコンストラクターがアノテーションを宣言する場合、オートワイヤーの候補と見なされます。Spring コンテナー内の Bean を一致させることで満たすことができる依存関係の数が最も多いコンストラクターが選択されます。どの候補も満たすことができない場合、プライマリ / デフォルトコンストラクター(存在する場合)が使用されます。クラスが最初に単一のコンストラクターのみを宣言する場合、アノテーションが付けられていなくても、常に使用されます。アノテーション付きコンストラクターはパブリックである必要はありません。
オートワイヤーフィールド
Bean の構築直後、設定メソッドが呼び出される前に、フィールドが注入されます。このような構成フィールドはパブリックである必要はありません。
オートワイヤーされたメソッド
構成メソッドには、任意の名前と任意の数の引数を指定できます。これらの各引数は、Spring コンテナー内の一致する Bean と自動接続されます。Bean プロパティ setter メソッドは、事実上、このような一般的な構成メソッドの特殊なケースにすぎません。構成メソッドはパブリックである必要はありません。
アノテーション構成と XML 構成
デフォルトの AutowiredAnnotationBeanPostProcessor は、"context:annotation-config" および "context:component-scan" XML タグによって登録されます。カスタム AutowiredAnnotationBeanPostProcessor Bean 定義を指定する場合は、デフォルトのアノテーション構成を削除するかオフにします。
注 :XML インジェクションの前にアノテーションインジェクションが実行されます。後者の構成は、両方のアプローチで接続されたプロパティの前者をオーバーライドします。
@Lookup メソッド
前述の通常のインジェクションポイントに加えて、このポストプロセッサーは、実行時にコンテナーによって置き換えられるルックアップメソッドを識別する Spring の @Lookup アノテーションも処理します。これは、本質的に getBean(Class, args) および getBean(String, args) の型安全バージョンです。詳細については、@Lookup's javadoc を参照してください。
- 導入:
- 2.5
- 作成者:
- Juergen Hoeller, Mark Fisher, Stephane Nicoll, Sebastien Deleuze, Sam Brannen, Phillip Webb
- 関連事項:
フィールドのサマリー
フィールドインターフェース BeanRegistrationAotProcessor から継承されたフィールド
IGNORE_REGISTRATION_ATTRIBUTEインターフェース Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCEコンストラクターの概要
コンストラクターコンストラクター説明方法の概要
修飾子と型メソッド説明ClassSE<?> determineBeanType(ClassSE<?> beanClass, StringSE beanName) このプロセッサーのInstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(Class, String)コールバックから最終的に返される Bean の型を決定します。ConstructorSE<?> @Nullable []determineCandidateConstructors(ClassSE<?> beanClass, StringSE beanName) 指定された Bean に使用する候補コンストラクターを決定します。protected booleanアノテーション付きのフィールドまたはメソッドに依存関係が必要かどうかを判断します。intgetOrder()このオブジェクトの順序値を取得します。voidpostProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, ClassSE<?> beanType, StringSE beanName) 指定された Bean の指定されたマージ済み Bean 定義を後処理します。postProcessProperties(PropertyValues pvs, ObjectSE bean, StringSE beanName) ファクトリが指定された Bean に適用する前に、指定されたプロパティ値を後処理します。processAheadOfTime(RegisteredBean registeredBean) 指定されたRegisteredBeanインスタンスを事前に処理し、コントリビューションまたはnullを返します。voidprocessInjection(ObjectSE bean) 任意のターゲットインスタンスを直接呼び出すためのネイティブ処理メソッド。設定された "autowired" アノテーション型の 1 つでアノテーションが付けられたすべてのフィールドとメソッドを解決します。voidresetBeanDefinition(StringSE beanName) 指定された名前の Bean 定義がリセットされ、このポストプロセッサーが影響を受ける Bean のメタデータをクリアする必要があるという通知。voidsetAutowiredAnnotationType(ClassSE<? extends AnnotationSE> autowiredAnnotationType) コンストラクター、フィールド、setter メソッド、任意の構成メソッドで使用される「オートワイヤー」アノテーション型を設定します。voidsetAutowiredAnnotationTypes(SetSE<ClassSE<? extends AnnotationSE>> autowiredAnnotationTypes) コンストラクター、フィールド、setter メソッド、任意の構成メソッドで使用される「オートワイヤー」アノテーション型を設定します。voidsetBeanFactory(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。voidsetOrder(int order) voidsetRequiredParameterName(StringSE requiredParameterName) 必要かどうかを指定するアノテーションの属性の名前を設定します。voidsetRequiredParameterValue(boolean requiredParameterValue) 必要に応じて依存関係をマークするブール値を設定します。クラス ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース BeanPostProcessor から継承されたメソッド
postProcessAfterInitialization, postProcessBeforeInitializationインターフェース BeanRegistrationAotProcessor から継承されたメソッド
isBeanExcludedFromAotProcessingインターフェース InstantiationAwareBeanPostProcessor から継承されたメソッド
postProcessAfterInstantiation, postProcessBeforeInstantiationインターフェース SmartInstantiationAwareBeanPostProcessor から継承されたメソッド
getEarlyBeanReference, predictBeanType
フィールドの詳細
logger
protected final org.apache.commons.logging.Log logger
コンストラクターの詳細
AutowiredAnnotationBeanPostProcessor
public AutowiredAnnotationBeanPostProcessor()Spring の標準@Autowiredおよび@Valueアノテーション用の新しいAutowiredAnnotationBeanPostProcessorを作成します。利用可能な場合は、一般的な
@Injectアノテーションもサポートします。
メソッドの詳細
setAutowiredAnnotationType
コンストラクター、フィールド、setter メソッド、任意の構成メソッドで使用される「オートワイヤー」アノテーション型を設定します。デフォルトの autowired アノテーション型は、Spring が提供する
@Autowiredおよび@Valueアノテーションと、利用可能な場合は一般的な@Injectアノテーションです。この setter プロパティは、開発者が独自の(Spring 固有ではない)アノテーション型を提供して、メンバーがオートワイヤーされることになっていることを示すために存在します。
setAutowiredAnnotationTypes
public void setAutowiredAnnotationTypes(SetSE<ClassSE<? extends AnnotationSE>> autowiredAnnotationTypes) コンストラクター、フィールド、setter メソッド、任意の構成メソッドで使用される「オートワイヤー」アノテーション型を設定します。デフォルトの autowired アノテーション型は、Spring が提供する
@Autowiredおよび@Valueアノテーションと、利用可能な場合は一般的な@Injectアノテーションです。この setter プロパティは、開発者が独自の(Spring 固有ではない)アノテーション型を提供して、メンバーがオートワイヤーされることになっていることを示すために存在します。
setRequiredParameterName
必要かどうかを指定するアノテーションの属性の名前を設定します。- 関連事項:
setRequiredParameterValue
public void setRequiredParameterValue(boolean requiredParameterValue) 必要に応じて依存関係をマークするブール値を設定します。たとえば、"required = true" (デフォルト)を使用する場合、この値は
trueである必要があります。ただし、"optional = false" を使用する場合、この値はfalseでなければなりません。- 関連事項:
setOrder
public void setOrder(int order) getOrder
setBeanFactory
インターフェースからコピーされた説明:BeanFactoryAware所有ファクトリを Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()またはカスタム init-method などの初期化コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanFactoryAwareのsetBeanFactory - パラメーター:
beanFactory- 所有 BeanFactory(非null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。- 関連事項:
postProcessMergedBeanDefinition
public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, ClassSE<?> beanType, StringSE beanName) インターフェースからコピーされた説明:MergedBeanDefinitionPostProcessor指定された Bean の指定されたマージ済み Bean 定義を後処理します。- 次で指定:
- インターフェース
MergedBeanDefinitionPostProcessorのpostProcessMergedBeanDefinition - パラメーター:
beanDefinition- Bean のマージされた Bean 定義beanType- 管理対象 Bean インスタンスの実際の型beanName- Bean の名前- 関連事項:
resetBeanDefinition
インターフェースからコピーされた説明:MergedBeanDefinitionPostProcessor指定された名前の Bean 定義がリセットされ、このポストプロセッサーが影響を受ける Bean のメタデータをクリアする必要があるという通知。デフォルトの実装は空です。
- 次で指定:
- インターフェース
MergedBeanDefinitionPostProcessorのresetBeanDefinition - パラメーター:
beanName- Bean の名前- 関連事項:
processAheadOfTime
インターフェースからコピーされた説明:BeanRegistrationAotProcessor指定されたRegisteredBeanインスタンスを事前に処理し、コントリビューションまたはnullを返します。プロセッサーは、任意の手法を自由に使用して、特定のインスタンスを分析できます。ほとんどの場合、リフレクションを使用して、コントリビューションで使用するフィールドまたはメソッドを見つけます。コントリビューションは通常、AOT 最適化アプリケーションの実行時に使用できるソースコードまたはリソースファイルを生成します。
指定されたインスタンスがプロセッサーに関連していない場合は、
nullコントリビューションを返す必要があります。- 次で指定:
- インターフェース
BeanRegistrationAotProcessorのprocessAheadOfTime - パラメーター:
registeredBean- 処理する登録済み Bean- 戻り値:
BeanRegistrationAotContributionまたはnull
determineBeanType
public ClassSE<?> determineBeanType(ClassSE<?> beanClass, StringSE beanName) throws BeanCreationException インターフェースからコピーされた説明:SmartInstantiationAwareBeanPostProcessorこのプロセッサーのInstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(Class, String)コールバックから最終的に返される Bean の型を決定します。デフォルトの実装は、指定された Bean クラスをそのまま返します。特定の実装では、事前に潜在的なプロキシクラスを作成 / 初期化するために、処理手順を完全に評価する必要があります。
- 次で指定:
- インターフェース
SmartInstantiationAwareBeanPostProcessorのdetermineBeanType - パラメーター:
beanClass- Bean の生のクラスbeanName- Bean の名前- 戻り値:
- Bean の型 (非
null) - 例外:
BeanCreationException
determineCandidateConstructors
public ConstructorSE<?> @Nullable [] determineCandidateConstructors(ClassSE<?> beanClass, StringSE beanName) throws BeanCreationException インターフェースからコピーされた説明:SmartInstantiationAwareBeanPostProcessor指定された Bean に使用する候補コンストラクターを決定します。デフォルトの実装は
nullを返します。- 次で指定:
- インターフェース
SmartInstantiationAwareBeanPostProcessorのdetermineCandidateConstructors - パラメーター:
beanClass- Bean の生のクラス (非null)beanName- Bean の名前- 戻り値:
- 候補コンストラクター、または何も指定されていない場合は
null - 例外:
BeanCreationException
postProcessProperties
インターフェースからコピーされた説明:InstantiationAwareBeanPostProcessorファクトリが指定された Bean に適用する前に、指定されたプロパティ値を後処理します。デフォルトの実装は、指定された
pvsをそのまま返します。- 次で指定:
- インターフェース
InstantiationAwareBeanPostProcessorのpostProcessProperties - パラメーター:
pvs- ファクトリが適用しようとしているプロパティ値 (非null)bean- Bean インスタンスは作成されましたが、そのプロパティはまだ設定されていませんbeanName- Bean の名前- 戻り値:
- 指定された Bean に適用する実際のプロパティ値(渡された PropertyValues インスタンスにすることができます)、またはプロパティの入力をスキップする
null
processInjection
任意のターゲットインスタンスを直接呼び出すためのネイティブ処理メソッド。設定された "autowired" アノテーション型の 1 つでアノテーションが付けられたすべてのフィールドとメソッドを解決します。- パラメーター:
bean- 処理するターゲットインスタンス- 例外:
BeanCreationException- オートワイヤーが失敗した場合- 関連事項:
determineRequiredStatus
アノテーション付きのフィールドまたはメソッドに依存関係が必要かどうかを判断します。「必須」の依存関係は、Bean が見つからないときにオートワイヤーが失敗することを意味します。それ以外の場合、Bean が見つからない場合、オートワイヤープロセスはフィールドまたはメソッドを単にバイパスします。
- パラメーター:
ann- Autowired アノテーション- 戻り値:
- アノテーションが依存関係が必要であることを示すかどうか