クラス AutowiredAnnotationBeanPostProcessor

java.lang.ObjectSE
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
実装されたすべてのインターフェース:
BeanRegistrationAotProcessorAwareBeanFactoryAwareBeanPostProcessorInstantiationAwareBeanPostProcessorSmartInstantiationAwareBeanPostProcessorMergedBeanDefinitionPostProcessorOrderedPriorityOrdered

アノテーション付きフィールド、setter メソッド、任意の構成メソッドをオートワイヤーする BeanPostProcessor 実装。挿入されるそのようなメンバーは、アノテーションによって検出されます。デフォルトでは、Spring の @Autowired および @Value アノテーションです。

Spring 独自の @Autowired の直接的な代替手段として、一般的な @InjectEE アノテーションもサポートします (利用可能な場合)。さらに、元の 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
関連事項:
  • フィールドの詳細

    • logger

      protected final Log logger
  • コンストラクターの詳細

    • AutowiredAnnotationBeanPostProcessor

      public AutowiredAnnotationBeanPostProcessor()
      Spring の標準 @Autowired および @Value アノテーション用の新しい AutowiredAnnotationBeanPostProcessor を作成します。

      利用可能な場合は、一般的な @InjectEE アノテーションと元の javax.inject.Inject バリアントもサポートします。

  • メソッドの詳細

    • setAutowiredAnnotationType

      public void setAutowiredAnnotationType(ClassSE<? extends AnnotationSE> autowiredAnnotationType)
      コンストラクター、フィールド、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

      public void setRequiredParameterName(StringSE requiredParameterName)
      必要かどうかを指定するアノテーションの属性の名前を設定します。
      関連事項:
    • 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 の値に多少似ています)。

      同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。

      次で指定:
      インターフェース OrderedgetOrder 
      戻り値:
      オーダー額
      関連事項:
    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory)
      インターフェースからコピーされた説明: BeanFactoryAware
      所有ファクトリを Bean インスタンスに提供するコールバック。

      通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet() またはカスタム init-method などの初期化コールバックの前に呼び出されます。

      次で指定:
      インターフェース BeanFactoryAwaresetBeanFactory 
      パラメーター:
      beanFactory - 所有 BeanFactory(非 null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。
      関連事項:
    • postProcessMergedBeanDefinition

      public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, ClassSE<?> beanType, StringSE beanName)
      インターフェースからコピーされた説明: MergedBeanDefinitionPostProcessor
      指定された Bean の指定されたマージ済み Bean 定義を後処理します。
      次で指定:
      インターフェース MergedBeanDefinitionPostProcessorpostProcessMergedBeanDefinition 
      パラメーター:
      beanDefinition - Bean のマージされた Bean 定義
      beanType - 管理対象 Bean インスタンスの実際の型
      beanName - Bean の名前
      関連事項:
    • resetBeanDefinition

      public void resetBeanDefinition(StringSE beanName)
      インターフェースからコピーされた説明: MergedBeanDefinitionPostProcessor
      指定された名前の Bean 定義がリセットされ、このポストプロセッサーが影響を受ける Bean のメタデータをクリアする必要があるという通知。

      デフォルトの実装は空です。

      次で指定:
      インターフェース MergedBeanDefinitionPostProcessorresetBeanDefinition 
      パラメーター:
      beanName - Bean の名前
      関連事項:
    • processAheadOfTime

      @Nullable public BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean)
      インターフェースからコピーされた説明: BeanRegistrationAotProcessor
      指定された RegisteredBean インスタンスを事前に処理し、コントリビューションまたは null を返します。

      プロセッサーは、任意の手法を自由に使用して、特定のインスタンスを分析できます。ほとんどの場合、リフレクションを使用して、コントリビューションで使用するフィールドまたはメソッドを見つけます。コントリビューションは通常、AOT 最適化アプリケーションの実行時に使用できるソースコードまたはリソースファイルを生成します。

      指定されたインスタンスがプロセッサーに関連していない場合は、null コントリビューションを返す必要があります。

      次で指定:
      インターフェース BeanRegistrationAotProcessorprocessAheadOfTime 
      パラメーター:
      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 クラスをそのまま返します。特定の実装では、事前に潜在的なプロキシクラスを作成 / 初期化するために、処理手順を完全に評価する必要があります。

      次で指定:
      インターフェース SmartInstantiationAwareBeanPostProcessordetermineBeanType 
      パラメーター:
      beanClass - Bean の生のクラス
      beanName - Bean の名前
      戻り値:
      Bean の型 (非 null)
      例外:
      BeanCreationException
    • determineCandidateConstructors

      @Nullable public ConstructorSE<?>[] determineCandidateConstructors(ClassSE<?> beanClass, StringSE beanName) throws BeanCreationException
      インターフェースからコピーされた説明: SmartInstantiationAwareBeanPostProcessor
      指定された Bean に使用する候補コンストラクターを決定します。

      デフォルトの実装は null を返します。

      次で指定:
      インターフェース SmartInstantiationAwareBeanPostProcessordetermineCandidateConstructors 
      パラメーター:
      beanClass - Bean の生のクラス (非 null)
      beanName - Bean の名前
      戻り値:
      候補コンストラクター、または何も指定されていない場合は null 
      例外:
      BeanCreationException
    • postProcessProperties

      public PropertyValues postProcessProperties(PropertyValues pvs, ObjectSE bean, StringSE beanName)
      インターフェースからコピーされた説明: InstantiationAwareBeanPostProcessor
      ファクトリが指定された Bean に適用する前に、指定されたプロパティ値を後処理します。

      デフォルトの実装は、指定された pvs をそのまま返します。

      次で指定:
      インターフェース InstantiationAwareBeanPostProcessorpostProcessProperties 
      パラメーター:
      pvs - ファクトリが適用しようとしているプロパティ値 (非 null)
      bean - Bean インスタンスは作成されましたが、そのプロパティはまだ設定されていません
      beanName - Bean の名前
      戻り値:
      指定された Bean に適用する実際のプロパティ値(渡された PropertyValues インスタンスにすることができます)、またはプロパティの入力をスキップする null 
    • processInjection

      public void processInjection(ObjectSE bean) throws BeanCreationException
      任意のターゲットインスタンスを直接呼び出すためのネイティブ処理メソッド。設定された "autowired" アノテーション型の 1 つでアノテーションが付けられたすべてのフィールドとメソッドを解決します。
      パラメーター:
      bean - 処理するターゲットインスタンス
      例外:
      BeanCreationException - オートワイヤーが失敗した場合
      関連事項:
    • determineRequiredStatus

      protected boolean determineRequiredStatus(MergedAnnotation<?> ann)
      アノテーション付きのフィールドまたはメソッドに依存関係が必要かどうかを判断します。

      「必須」の依存関係は、Bean が見つからないときにオートワイヤーが失敗することを意味します。それ以外の場合、Bean が見つからない場合、オートワイヤープロセスはフィールドまたはメソッドを単にバイパスします。

      パラメーター:
      ann - Autowired アノテーション
      戻り値:
      アノテーションが依存関係が必要であることを示すかどうか