PropertyResolver Property Solver, a principalement deux fonctions:
Obtenez la valeur de propriété PropertyValue correspondante (GetProperty) via le nom de propriété PropertyName.
Remplacez l'espace réservé à la propriété dans le format $ {PropertyName: DefaultValue} par la valeur réelle (ResolvePlaceHolders).
Remarque: Les valeurs de propriété obtenues par GetProperty sont toutes des valeurs après avoir appelé RESOLLPLACEHOLDERS pour le remplacement des espaces réservés.
Le diagramme du système des composants est le suivant:
Interface PropertyResolver:
Cette interface définit toutes les fonctions d'un composant. L'une consiste à obtenir la valeur correspondante via la clé. Lorsque la valeur ne peut pas être obtenue, il existe 3 options: renvoyez une valeur nulle, utilisez la valeur par défaut spécifiée ou lancez une exception d'état illégal. La valeur obtenue est le type de chaîne par défaut. Bien sûr, il peut également être considéré comme spécifiant un type, qui dépend de la conversion de conversion pour la conversion de type.
Il y a un autre problème: la valeur de la propriété peut contenir des espaces réservés au format de $ {}, donc une autre fonction a été ajoutée à l'interface consiste à remplacer les espaces réservés dans la valeur de la propriété (note: les espaces réservés ne sont pas autorisés pour les noms d'attribut, et même s'ils existent, les composants ne seront pas remplacés comme des espaces réservés). Lorsque l'espace réservé ne peut pas être remplacé, il existe deux options: gardez-la telle qu'elle est ou lancez une exception de paramètre illégal. L'interface spécifique est la suivante:
Interface configurablePropertyResolver:
Cette interface définit comment le composant lui-même est configuré. Par exemple: je viens de mentionner que lors de l'obtention de la valeur, vous pouvez spécifier tout type, qui dépend de la conversion de conversion pour la conversion de type. L'interface actuelle fournit les paramètres et l'acquisition de ConversionService. En outre, vous pouvez configurer le format des espaces réservés de la propriété, y compris: Préfixe d'espace pour place (par défaut est "$ {"), suffixe de placement (défaut par défaut est "}"), séparateur de valeur de placement (défaut est ":", utilisé pour séparer PropertyName et DefaultValue). Le composant peut également définir les attributs qui doivent exister et peuvent également vérifier si les attributs qui doivent exister existent vraiment (s'ils n'existent pas, une exception sera lancée). L'interface spécifique est la suivante:
Classe AbstractPropertyResolver:
Classe d'implémentation abstraite pour les deux interfaces ci-dessus. Il implémente toutes les méthodes de l'interface ConfigurablePropertyResolver. En ce qui concerne la méthode d'interface PropertyResolver, il existe 3 méthodes GetProperty qui doivent être implémentées en sous-classes (d'autres méthodes surchargées appellent ces 3 méthodes):
String getProperty (string key); <T> t getProperty (string key, class <t> targetType); <T> class <t> getPropertyAsclass (string key, class <t> cibleType); / *** la classe actuelle définit également une méthode abstraite supplémentaire pour renvoyer directement la valeur de valeur obtenue (pas de remplacement d'imposition). * La méthode générale GetProperty remplacera l'espace réservé dans la valeur de valeur par défaut et le renvoie. * / String abstrait protégé getPropertyAsrawString (String Key); En ce qui concerne le remplacement de l'espace réservé de la propriété, cela se fait à l'aide de deux objets PropertyPlaceHolderhelper Property Planolholder Assistant (classe d'outils), l'un de ces deux objets est un mode strict et l'autre est un mode non stricte.
PropertySourcesPropertyResolver Classe:
Cette classe est la seule classe d'implémentation complète du système. Il prend la collection de sources de propriétés PropertySources (list <propiceSource> Liste des sources de propriétés détenues en interne) comme source de la valeur de la propriété, itère via chaque propriété Source dans l'ordre, et renvoie s'il obtient une valeur de propriété non nul.