クラス PlaceholderConfigurerSupport

実装されたすべてのインターフェース:
AwareBeanFactoryAwareBeanNameAwareBeanFactoryPostProcessorOrderedPriorityOrdered
既知の直属サブクラス
PropertyPlaceholderConfigurerPropertySourcesPlaceholderConfigurer

public abstract class PlaceholderConfigurerSupport extends PropertyResourceConfigurer implements BeanNameAware, BeanFactoryAware
Bean 定義プロパティ値のプレースホルダーを解決するプロパティリソースコンフィギュラーの抽象基本クラス。実装では、プロパティファイルまたは他のプロパティソースから値を Bean 定義にプルします

デフォルトのプレースホルダー構文は、Ant/Log4J/JSP EL スタイルに従います。

${...}
XML Bean 定義の例:
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName" value="${driver}" />
   <property name="url" value="jdbc:${dbname}" />
 </bean>
 
プロパティファイルの例:
 driver=com.mysql.jdbc.Driver
 dbname=mysql:mydb
アノテーション付き Bean 定義は、@Value アノテーションを使用してプロパティ置換を利用できます。
@Value("${person.age}")
実装は、Bean 参照内の単純なプロパティ値、リスト、マップ、props、Bean 名をチェックします。さらに、プレースホルダー値は、次のような他のプレースホルダーを相互参照することもできます。
 rootPath=myrootdir
 subPath=${rootPath}/subdir
PropertyOverrideConfigurer とは対照的に、この型のサブクラスでは、Bean 定義に明示的なプレースホルダーを埋めることができます。

構成プログラムがプレースホルダーを解決できない場合、BeanDefinitionStoreException がスローされます。複数のプロパティファイルに対してチェックする場合は、locations プロパティを介して複数のリソースを指定します。それぞれ独自のプレースホルダー構文を持つ複数のコンフィギュレーターを定義することもできます。ignoreUnresolvablePlaceholders を使用して、プレースホルダーを解決できない場合に意図的に例外のスローを抑制します。

デフォルトのプロパティ値は、properties プロパティを介して各コンフィギュレータインスタンスに対してグローバルに定義できます。または、デフォルトで ":" であり、setValueSeparator(String) を介してカスタマイズ可能な値セパレータを使用して、プロパティごとに定義できます。

デフォルト値の XML プロパティの例:

   <property name="url" value="jdbc:${dbname:defaultdb}" />
 
導入:
3.1
作成者:
Chris Beams, Juergen Hoeller
関連事項:
  • フィールドの詳細

    • DEFAULT_PLACEHOLDER_PREFIX

      public static final StringSE DEFAULT_PLACEHOLDER_PREFIX
      デフォルトのプレースホルダープレフィックス: "${".
      関連事項:
    • DEFAULT_PLACEHOLDER_SUFFIX

      public static final StringSE DEFAULT_PLACEHOLDER_SUFFIX
      デフォルトのプレースホルダーサフィックス: "}".
      関連事項:
    • DEFAULT_VALUE_SEPARATOR

      public static final StringSE DEFAULT_VALUE_SEPARATOR
      デフォルト値セパレータ: ":".
      関連事項:
    • placeholderPrefix

      protected StringSE placeholderPrefix
      デフォルトは "${" です。
    • placeholderSuffix

      protected StringSE placeholderSuffix
      デフォルトは "}" です。
    • valueSeparator

      @Nullable protected StringSE valueSeparator
      デフォルトは ":" です。
    • trimValues

      protected boolean trimValues
    • nullValue

      @Nullable protected StringSE nullValue
    • ignoreUnresolvablePlaceholders

      protected boolean ignoreUnresolvablePlaceholders
  • コンストラクターの詳細

    • PlaceholderConfigurerSupport

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

    • setPlaceholderPrefix

      public void setPlaceholderPrefix(StringSE placeholderPrefix)
      プレースホルダー文字列が始まる接頭辞を設定します。デフォルトは "${" です。
    • setPlaceholderSuffix

      public void setPlaceholderSuffix(StringSE placeholderSuffix)
      プレースホルダー文字列が終わるサフィックスを設定します。デフォルトは "}" です。
    • setValueSeparator

      public void setValueSeparator(@Nullable StringSE valueSeparator)
      プレースホルダー変数と関連するデフォルト値の間の区切り文字を指定します。そのような特殊文字を値の区切り文字として処理する必要がない場合は、null を指定します。デフォルトは ":" です。
    • setTrimValues

      public void setTrimValues(boolean trimValues)
      解決された値を適用する前にトリミングして、最初と最後から余分な空白を削除するかどうかを指定します。

      デフォルトは false です。

      導入:
      4.3
    • setNullValue

      public void setNullValue(StringSE nullValue)
      プレースホルダー値として解決されたときに null として扱われる必要がある値を設定します。""(空の文字列)または "null"。

      これは完全なプロパティ値にのみ適用され、連結された値の一部には適用されないことに注意してください。

      デフォルトでは、そのような null 値は定義されていません。つまり、ここで対応する値を明示的にマップしない限り、null をプロパティ値として表現する方法はありません。

    • setIgnoreUnresolvablePlaceholders

      public void setIgnoreUnresolvablePlaceholders(boolean ignoreUnresolvablePlaceholders)
      解決できないプレースホルダーを無視するかどうかを設定します。

      デフォルトは「false」: プレースホルダーが解決に失敗した場合、例外がスローされます。このような場合にプレースホルダー文字列をそのまま保持するには、このフラグを "true" に切り替えて、他のプレースホルダー構成プログラムに任せて解決します。

    • setBeanName

      public void setBeanName(StringSE beanName)
      プロパティファイルの場所にある解決できないプレースホルダーで失敗しないように、独自の Bean 定義を解析していないことを確認する必要があるだけです。後者のケースは、リソースの場所にあるシステムプロパティのプレースホルダーで発生する可能性があります。
      次で指定:
      インターフェース BeanNameAwaresetBeanName 
      パラメーター:
      beanName - ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String) メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
      関連事項:
    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory)
      プロパティファイルの場所にある解決できないプレースホルダーで失敗しないように、独自の Bean 定義を解析していないことを確認する必要があるだけです。後者のケースは、リソースの場所にあるシステムプロパティのプレースホルダーで発生する可能性があります。
      次で指定:
      インターフェース BeanFactoryAwaresetBeanFactory 
      パラメーター:
      beanFactory - 所有 BeanFactory(非 null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。
      関連事項:
    • doProcessProperties

      protected void doProcessProperties(ConfigurableListableBeanFactory beanFactoryToProcess, StringValueResolver valueResolver)