PropertyResolverプロパティソルバーには、主に2つの機能があります。
PropertyNameプロパティ名を介して、対応するPropertyValueプロパティ値(GetProperty)を取得します。
プロパティプレースホルダーをフォーマット$ {propertyName:defaultValue}の実際の値(ResolvePlaceHolders)に置き換えます。
注:GetPropertyによって取得されたプロパティ値はすべて、プレースホルダーの交換のためにResolvePlaceholdersを呼び出した後の値です。
コンポーネントシステム図は次のとおりです。
PropertyResolverインターフェイス:
このインターフェイスは、コンポーネントが持っているすべての機能を定義します。 1つは、キーを介して対応する値を取得することです。値を取得できない場合、3つのオプションがあります。NULL値を返す、指定されたデフォルト値を使用するか、違法状態の例外をスローします。取得した値は、デフォルトでは文字列タイプです。もちろん、タイプの変換のためのコンバージョンサービスに依存するタイプを指定すると見なすこともできます。
別の問題があります。プロパティ値には、$ {}の形式のプレースホルダーを含めることができるため、インターフェイスに別の関数が追加されているため、プロパティ値のプレースホルダーを置き換えることです(注:プレースホルダーは属性名に許可されません。プレースホルダーを交換できない場合、2つのオプションがあります。それをそのまま保持するか、違法なパラメーターの例外を投げます。特定のインターフェイスは次のとおりです。
ConfigureablePropertyResolverインターフェイス:
このインターフェイスは、コンポーネント自体の構成方法を定義します。たとえば、値を取得したときに、型変換のためのコンバージョンサービスに依存する任意のタイプを指定できると述べました。現在のインターフェイスは、コンバージョンサービスの設定と取得を提供します。さらに、プレースホルダープレフィックス(デフォルトは "$ {")、プレースホルダーの接尾辞(デフォルトは「}」)、プレースホルダー値セパレーター(デフォルトは ":"、PropertyNameとdefaultValueを分離するために使用)を含む、プロパティプレースホルダーの形式を構成できます。コンポーネントは、どの属性が存在する必要があるかを設定することもでき、存在する必要がある属性が実際に存在するかどうかを確認することもできます(存在しない場合、例外がスローされます)。特定のインターフェイスは次のとおりです。
AbstractPropertyResolverクラス:
上記の2つのインターフェイスの抽象実装クラス。構成可能なPropertyResolverインターフェイスのすべての方法を実装します。 PropertyResolver Interfaceメソッドに関しては、サブクラスに実装する必要がある3つのgetPropertyメソッドがあります(他の過負荷方法は、これら3つの方法を呼び出します):
String GetProperty(String Key); <t> t GetProperty(String Key、class <t> targetType); <t> class <t> getPropertyasclass(String Key、class <t> targetType); *一般的なGetPropertyメソッドは、デフォルトで値の値のプレースホルダーを置き換えて返します。 */保護された要約文字列getPropertyasRawString(String Key);プロパティプレースホルダーの交換に関しては、2つのPropertyPlaceHolderHelper Property Placeholder Assistant(Tool Class)オブジェクトの助けを借りて行われます。これら2つのオブジェクトの1つは厳密なモードで、もう1つは非厳格モードです。
propertySourcesPropertyResolverクラス:
このクラスは、システム内の唯一の完全な実装クラスです。 PropertySources Property Source Collection(List <propertySource>内部保有プロパティソースリスト)をプロパティ値のソースとして使用し、各PropertySourceを順番に繰り返し、非NULLプロパティ値を取得する場合に戻ります。