クラス AutowiredAnnotationBeanPostProcessor
- 実装されたすべてのインターフェース:
BeanRegistrationAotProcessor
、Aware
、BeanFactoryAware
、BeanPostProcessor
、InstantiationAwareBeanPostProcessor
、SmartInstantiationAwareBeanPostProcessor
、MergedBeanDefinitionPostProcessor
、Ordered
、PriorityOrdered
BeanPostProcessor
実装。挿入されるそのようなメンバーは、アノテーションによって検出されます。デフォルトでは、Spring の @Autowired
および @Value
アノテーションです。Spring 独自の @Autowired
の直接的な代替手段として、一般的な @Inject
EE アノテーションもサポートします (利用可能な場合)。さらに、元の JSR-330 仕様 (Java EE 6-8 で知られている) にさかのぼる javax.inject.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
- 関連事項:
フィールドのサマリー
フィールドインターフェース org.springframework.beans.factory.aot.BeanRegistrationAotProcessor から継承されたフィールド
IGNORE_REGISTRATION_ATTRIBUTE
インターフェース org.springframework.core.Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターのサマリー
コンストラクターコンストラクター説明メソッドのサマリー
修飾子と型メソッド説明ClassSE<?>
determineBeanType
(ClassSE<?> beanClass, StringSE beanName) このプロセッサーのInstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
コールバックから最終的に返される Bean の型を決定します。ConstructorSE<?>[]
determineCandidateConstructors
(ClassSE<?> beanClass, StringSE beanName) 指定された Bean に使用する候補コンストラクターを決定します。protected boolean
アノテーション付きのフィールドまたはメソッドに依存関係が必要かどうかを判断します。int
getOrder()
このオブジェクトの順序値を取得します。void
postProcessMergedBeanDefinition
(RootBeanDefinition beanDefinition, ClassSE<?> beanType, StringSE beanName) 指定された Bean の指定されたマージ済み Bean 定義を後処理します。postProcessProperties
(PropertyValues pvs, ObjectSE bean, StringSE beanName) ファクトリが指定された Bean に適用する前に、指定されたプロパティ値を後処理します。processAheadOfTime
(RegisteredBean registeredBean) 指定されたRegisteredBean
インスタンスを事前に処理し、コントリビューションまたはnull
を返します。void
processInjection
(ObjectSE bean) 任意のターゲットインスタンスを直接呼び出すためのネイティブ処理メソッド。設定された "autowired" アノテーション型の 1 つでアノテーションが付けられたすべてのフィールドとメソッドを解決します。void
resetBeanDefinition
(StringSE beanName) 指定された名前の Bean 定義がリセットされ、このポストプロセッサーが影響を受ける Bean のメタデータをクリアする必要があるという通知。void
setAutowiredAnnotationType
(ClassSE<? extends AnnotationSE> autowiredAnnotationType) コンストラクター、フィールド、setter メソッド、任意の構成メソッドで使用される「オートワイヤー」アノテーション型を設定します。void
setAutowiredAnnotationTypes
(SetSE<ClassSE<? extends AnnotationSE>> autowiredAnnotationTypes) コンストラクター、フィールド、setter メソッド、任意の構成メソッドで使用される「オートワイヤー」アノテーション型を設定します。void
setBeanFactory
(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。void
setOrder
(int order) void
setRequiredParameterName
(StringSE requiredParameterName) 必要かどうかを指定するアノテーションの属性の名前を設定します。void
setRequiredParameterValue
(boolean requiredParameterValue) 必要に応じて依存関係をマークするブール値を設定します。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.beans.factory.config.BeanPostProcessor から継承されたメソッド
postProcessAfterInitialization, postProcessBeforeInitialization
インターフェース org.springframework.beans.factory.aot.BeanRegistrationAotProcessor から継承されたメソッド
isBeanExcludedFromAotProcessing
インターフェース org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor から継承されたメソッド
postProcessAfterInstantiation, postProcessBeforeInstantiation
インターフェース org.springframework.beans.factory.config.SmartInstantiationAwareBeanPostProcessor から継承されたメソッド
getEarlyBeanReference, predictBeanType
フィールドの詳細
logger
コンストラクターの詳細
AutowiredAnnotationBeanPostProcessor
public AutowiredAnnotationBeanPostProcessor()Spring の標準@Autowired
および@Value
アノテーション用の新しいAutowiredAnnotationBeanPostProcessor
を作成します。利用可能な場合は、一般的な
@Inject
EE アノテーションと元のjavax.inject.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
public int getOrder()インターフェースからコピーされた説明:Ordered
このオブジェクトの順序値を取得します。値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット
load-on-startup
の値に多少似ています)。同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
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(java.lang.Class<?>, java.lang.String)
コールバックから最終的に返される Bean の型を決定します。デフォルトの実装は、指定された Bean クラスをそのまま返します。特定の実装では、事前に潜在的なプロキシクラスを作成 / 初期化するために、処理手順を完全に評価する必要があります。
- 次で指定:
- インターフェース
SmartInstantiationAwareBeanPostProcessor
のdetermineBeanType
- パラメーター:
beanClass
- Bean の生のクラスbeanName
- Bean の名前- 戻り値:
- Bean の型 (非
null
) - 例外:
BeanCreationException
determineCandidateConstructors
@Nullable public ConstructorSE<?>[] 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 アノテーション- 戻り値:
- アノテーションが依存関係が必要であることを示すかどうか