PropertyResolver Property Solver, principalmente tiene dos funciones:
Obtenga el valor de propiedad PropertyValue correspondiente (GetProperty) a través del nombre de la propiedad Propertyname.
Reemplace el marcador de posición de la propiedad en el formato $ {Propertyname: defaultValue} con el valor real (resuelve placeholders).
Nota: Los valores de propiedad obtenidos por GetProperty son todos los valores después de llamar a los titulares de dueños de resolución para el reemplazo de marcadores de posición.
El diagrama del sistema de componentes es el siguiente:
Interfaz PropertyResolver:
Esta interfaz define todas las funciones que tiene un componente. Una es obtener el valor correspondiente a través de la clave. Cuando no se puede obtener el valor, hay 3 opciones: devolver un valor nulo, usar el valor predeterminado especificado o lanzar una excepción de estado ilegal. El valor obtenido es el tipo de cadena de forma predeterminada. Por supuesto, también se puede considerar que especifica un tipo, que depende del servicio de conversión para la conversión de tipo.
Hay otro problema: el valor de la propiedad puede contener a los marcadores de posición en el formato de $ {}, por lo que se ha agregado otra función a la interfaz es reemplazar a los marcadores de posición en el valor de la propiedad (nota: los marcadores de posición no están permitidos para los nombres de los atributos, e incluso si existen, los componentes no se reemplazarán como marcadores de posición). Cuando el marcador de posición no puede ser reemplazado, hay dos opciones: mantenerlo como es o lanzar una excepción de parámetros ilegales. La interfaz específica es la siguiente:
Interfaz ConfigurablePropertyResolver:
Esta interfaz define cómo se configura el componente en sí. Por ejemplo: acabo de mencionar que al obtener valor, puede especificar cualquier tipo, que depende del servicio Conversions para la conversión de tipo. La interfaz actual proporciona la configuración y la adquisición de ConversionService. Además, puede configurar el formato de los marcadores de posición de la propiedad, que incluyen: prefijo de marcador de posición (el valor predeterminado es "$ {"), sufijo de marcador de posición (el valor predeterminado es "}"), el separador de valor de marcador de posición (el valor predeterminado es ":", utilizado para separar PropertyName y defaultValue). El componente también puede establecer qué atributos deben existir, y también puede verificar si los atributos que deben existir realmente existen (si no existen, se lanzará una excepción). La interfaz específica es la siguiente:
Clase de AbstractPropertyResolver:
Clase de implementación abstracta para las dos interfaces anteriores. Implementa todos los métodos de la interfaz configurablePropertyResolver. Con respecto al método de interfaz PropertyResolver, existen 3 métodos GetProperty que deben implementarse en subclases (otros métodos sobrecargados llaman a estos 3 métodos):
String getProperty (clave de cadena); <t> t getProperty (clave de cadena, clase <T> TargetType); <t> clase <T> getPropertyAsclass (clave de cadena, clase <t> TargetType);/*** La clase actual también define un método abstracto adicional para devolver directamente el valor de valor obtenido (sin reemplazo de titulares de lugar). * El método General GetProperty reemplazará al marcador de posición en el valor de valor por defecto y lo devolverá. */String abstracto protegido getPropertyAsrawString (tecla de cadena); En cuanto a reemplazar el marcador de posición de la propiedad, se realiza con la ayuda de dos objetos de Asistente de marcador de posición de propiedad de PropertyPlaceHelper (clase de herramientas), uno de estos dos objetos es el modo estricto y el otro es el modo no rictamente.
PropertySourcesPropertyResolver Clase:
Esta clase es la única clase de implementación completa en el sistema. Toma la colección de origen de propiedades de PropertySources (List <Propersource> Lista de origen de propiedades contenidas internamente) como fuente del valor de propiedad, itera a través de cada PropertySource en orden y devuelve si obtiene un valor de propiedad no nulo.