public abstract class PlaceholderConfigurerSupport extends PropertyResourceConfigurer implements BeanNameAware, BeanFactoryAware
デフォルトのプレースホルダー構文は、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 プロパティの例:
PropertyPlaceholderConfigurer
, PropertySourcesPlaceholderConfigurer
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | DEFAULT_PLACEHOLDER_PREFIX デフォルトのプレースホルダープレフィックス: "${". |
static StringSE | DEFAULT_PLACEHOLDER_SUFFIX デフォルトのプレースホルダーサフィックス: "}". |
static StringSE | DEFAULT_VALUE_SEPARATOR デフォルト値セパレータ: ":". |
protected boolean | ignoreUnresolvablePlaceholders |
protected StringSE | nullValue |
protected StringSE | placeholderPrefix デフォルトは "${" です。 |
protected StringSE | placeholderSuffix デフォルトは "}" です。 |
protected boolean | trimValues |
protected StringSE | valueSeparator デフォルトは ":" です。 |
localOverride, localProperties, logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
PlaceholderConfigurerSupport() |
修飾子と型 | メソッドと説明 |
---|---|
protected void | doProcessProperties(ConfigurableListableBeanFactory beanFactoryToProcess, StringValueResolver valueResolver) |
void | setBeanFactory(BeanFactory beanFactory) プロパティファイルの場所にある解決できないプレースホルダーで失敗しないように、独自の Bean 定義を解析していないことを確認する必要があるだけです。 |
void | setBeanName(StringSE beanName) プロパティファイルの場所にある解決できないプレースホルダーで失敗しないように、独自の Bean 定義を解析していないことを確認する必要があるだけです。 |
void | setIgnoreUnresolvablePlaceholders(boolean ignoreUnresolvablePlaceholders) 解決できないプレースホルダーを無視するかどうかを設定します。 |
void | setNullValue(StringSE nullValue) プレースホルダー値として解決されたときに null として扱われる必要がある値を設定します。 |
void | setPlaceholderPrefix(StringSE placeholderPrefix) プレースホルダー文字列が始まる接頭辞を設定します。 |
void | setPlaceholderSuffix(StringSE placeholderSuffix) プレースホルダー文字列が終わるサフィックスを設定します。 |
void | setTrimValues(boolean trimValues) 解決された値を適用する前にトリミングして、最初と最後から余分な空白を削除するかどうかを指定します。 |
void | setValueSeparator(StringSE valueSeparator) プレースホルダー変数と関連するデフォルト値の間の区切り文字を指定します。値セパレータとしてそのような特殊文字を処理する必要がない場合は null |
convertProperties, convertProperty, convertPropertyValue, getOrder, postProcessBeanFactory, processProperties, setOrder
loadProperties, mergeProperties, setFileEncoding, setIgnoreResourceNotFound, setLocalOverride, setLocation, setLocations, setProperties, setPropertiesArray, setPropertiesPersister
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final StringSE DEFAULT_PLACEHOLDER_PREFIX
public static final StringSE DEFAULT_PLACEHOLDER_SUFFIX
public static final StringSE DEFAULT_VALUE_SEPARATOR
protected boolean trimValues
protected boolean ignoreUnresolvablePlaceholders
public void setPlaceholderPrefix(StringSE placeholderPrefix)
public void setPlaceholderSuffix(StringSE placeholderSuffix)
public void setValueSeparator(@Nullable StringSE valueSeparator)
null
を指定します。デフォルトは ":" です。public void setTrimValues(boolean trimValues)
デフォルトは false
です。
public void setNullValue(StringSE nullValue)
null
として扱われる必要がある値を設定します。""(空の文字列)または "null"。これは完全なプロパティ値にのみ適用され、連結された値の一部には適用されないことに注意してください。
デフォルトでは、そのような null 値は定義されていません。つまり、ここで対応する値を明示的にマップしない限り、null
をプロパティ値として表現する方法はありません。
public void setIgnoreUnresolvablePlaceholders(boolean ignoreUnresolvablePlaceholders)
デフォルトは「false」: プレースホルダーが解決に失敗した場合、例外がスローされます。このような場合にプレースホルダー文字列をそのまま保持するには、このフラグを "true" に切り替えて、他のプレースホルダー構成プログラムに任せて解決します。
public void setBeanName(StringSE beanName)
BeanNameAware
の setBeanName
beanName
- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)
メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。PropertiesLoaderSupport.setLocations(org.springframework.core.io.Resource...)
, ResourceEditor
public void setBeanFactory(BeanFactory beanFactory)
BeanFactoryAware
の setBeanFactory
beanFactory
- 所有 BeanFactory(非 null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。PropertiesLoaderSupport.setLocations(org.springframework.core.io.Resource...)
, ResourceEditor
protected void doProcessProperties(ConfigurableListableBeanFactory beanFactoryToProcess, StringValueResolver valueResolver)