クラス PropertyPathFactoryBean

java.lang.ObjectSE
org.springframework.beans.factory.config.PropertyPathFactoryBean
実装されたすべてのインターフェース:
AwareBeanFactoryAwareBeanNameAwareFactoryBean<ObjectSE>

public class PropertyPathFactoryBean extends ObjectSE implements FactoryBean<ObjectSE>, BeanNameAware, BeanFactoryAware
指定されたターゲットオブジェクトのプロパティパスを評価する FactoryBean

ターゲットオブジェクトは、直接または Bean 名を介して指定できます。

使用例:

<!-- target bean to be referenced by name -->
 <bean id="tb" class="org.springframework.beans.TestBean" singleton="false">
   <property name="age" value="10"/>
   <property name="spouse">
     <bean class="org.springframework.beans.TestBean">
       <property name="age" value="11"/>
     </bean>
   </property>
 </bean>

 <!-- will result in 12, which is the value of property 'age' of the inner bean -->
 <bean id="propertyPath1" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
   <property name="targetObject">
     <bean class="org.springframework.beans.TestBean">
       <property name="age" value="12"/>
     </bean>
   </property>
   <property name="propertyPath" value="age"/>
 </bean>

 <!-- will result in 11, which is the value of property 'spouse.age' of bean 'tb' -->
 <bean id="propertyPath2" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
   <property name="targetBeanName" value="tb"/>
   <property name="propertyPath" value="spouse.age"/>
 </bean>

 <!-- will result in 10, which is the value of property 'age' of bean 'tb' -->
 <bean id="tb.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>

構成ファイルで Spring 2.0 および XML スキーマのサポートを使用している場合は、プロパティパスアクセスに次のスタイルの構成を使用することもできます。(その他の例については、Spring リファレンスマニュアルの「XML スキーマベースの構成」という付録を参照してください。)

 <!-- will result in 10, which is the value of property 'age' of bean 'tb' -->
 <util:property-path id="name" path="testBean.age"/>
提案と最初のプロトタイプを作成してくれた Matthias Ernst に感謝します。
導入:
1.1.2
作成者:
Juergen Hoeller
関連事項:
  • フィールドサマリー

    インターフェース org.springframework.beans.factory.FactoryBean から継承されたフィールド

    OBJECT_TYPE_ATTRIBUTE
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。
    この FactoryBean が作成するオブジェクトの型、または事前に不明な場合は null を返します。
    boolean
    この FactoryBean はしばしばシングルトンターゲットに使用されますが、プロパティパスに対して呼び出された getter は各呼び出しに対して新しいオブジェクトを返す可能性があるため、各 getObject() 呼び出しに対して同じオブジェクトを返さないと想定する必要があります。
    void
    所有ファクトリを Bean インスタンスに提供するコールバック。
    void
    "targetObject" も "targetBeanName" も "propertyPath" も指定されていない場合、この PropertyPathFactoryBean の Bean 名は "beanName.property" パターンとして解釈されます。
    void
    ターゲットに適用するプロパティパスを指定します。
    void
    setResultType(ClassSE<?> resultType)
    プロパティパスを評価した結果の型を指定します。
    void
    setTargetBeanName(StringSE targetBeanName)
    プロパティパスを適用するターゲット Bean の名前を指定します。
    void
    プロパティパスを適用するターゲットオブジェクトを指定します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • コンストラクターの詳細

    • PropertyPathFactoryBean

      public PropertyPathFactoryBean()
  • メソッドの詳細

    • setTargetObject

      public void setTargetObject(ObjectSE targetObject)
      プロパティパスを適用するターゲットオブジェクトを指定します。または、ターゲット Bean 名を指定します。
      パラメーター:
      targetObject - ターゲットオブジェクト、たとえば Bean 参照または内部 Bean
      関連事項:
    • setTargetBeanName

      public void setTargetBeanName(StringSE targetBeanName)
      プロパティパスを適用するターゲット Bean の名前を指定します。または、ターゲットオブジェクトを直接指定します。
      パラメーター:
      targetBeanName - 含まれている Bean ファクトリで検索される Bean 名 (たとえば "testBean" )
      関連事項:
    • setPropertyPath

      public void setPropertyPath(StringSE propertyPath)
      ターゲットに適用するプロパティパスを指定します。
      パラメーター:
      propertyPath - 潜在的にネストされたプロパティパス (たとえば「年齢」または "spouse.age" )
    • setResultType

      public void setResultType(ClassSE<?> resultType)
      プロパティパスを評価した結果の型を指定します。

      メモ: これは、直接指定されたターゲットオブジェクトまたはシングルトンターゲット Bean には必要ありません。型はイントロスペクションによって判別できます。型によるマッチングが必要な場合(たとえば、オートワイヤーの場合)、プロトタイプターゲットの場合はこれを指定します。

      パラメーター:
      resultType - 結果型、たとえば "java.lang.Integer"
    • setBeanName

      public void setBeanName(StringSE beanName)
      "targetObject" も "targetBeanName" も "propertyPath" も指定されていない場合、この PropertyPathFactoryBean の Bean 名は "beanName.property" パターンとして解釈されます。これにより、ID/ 名前だけで簡潔な Bean 定義が可能になります。
      次で指定:
      インターフェース BeanNameAwaresetBeanName 
      パラメーター:
      beanName - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
    • setBeanFactory

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

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

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

      @Nullable public ObjectSE getObject() throws BeansException
      インターフェースからコピーされた説明: FactoryBean
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。

      BeanFactory と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。

      この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException をスローします。

      Spring 2.0 以降、FactoryBeans は null オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。

      次で指定:
      インターフェース FactoryBean<ObjectSE>getObject 
      戻り値:
      Bean のインスタンス (null にすることができます)
      例外:
      BeansException
      関連事項:
    • getObjectType

      @Nullable public ClassSE<?> getObjectType()
      インターフェースからコピーされた説明: FactoryBean
      この FactoryBean が作成するオブジェクトの型、または事前に不明な場合は null を返します。

      これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。

      シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。

      このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。

      注意 : オートワイヤーは、ここで null を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。

      次で指定:
      インターフェース FactoryBean<ObjectSE>getObjectType 
      戻り値:
      この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は null 
      関連事項:
    • isSingleton

      public boolean isSingleton()
      この FactoryBean はしばしばシングルトンターゲットに使用されますが、プロパティパスに対して呼び出された getter は各呼び出しに対して新しいオブジェクトを返す可能性があるため、各 getObject() 呼び出しに対して同じオブジェクトを返さないと想定する必要があります。
      次で指定:
      インターフェース FactoryBean<ObjectSE>isSingleton 
      戻り値:
      公開されたオブジェクトがシングルトンかどうか
      関連事項: