PropertyResolver Property Solver, tem principalmente duas funções:
Obtenha o valor da propriedade PropertyValue correspondente (getProperty) através do nome da propriedade PropertyName.
Substitua o espaço reservado da propriedade no formato $ {PropertyName: defaultValue} pelo valor real (resolventendchousholders).
NOTA: Os valores da propriedade obtidos pelo GetProperty são todos valores após chamar o ResolvePlaceHolders para substituir os espaços reservados.
O diagrama do sistema de componentes é o seguinte:
Interface PropertyResolver:
Esta interface define todas as funções que um componente possui. Um é obter o valor correspondente através da chave. Quando o valor não puder ser obtido, existem 3 opções: retornar um valor nulo, usar o valor padrão especificado ou lançar uma exceção ilegal de estado. O valor obtido é o tipo de string por padrão. Obviamente, ele também pode ser considerado como especificação de um tipo, que depende do serviço de conversão do tipo para o tipo.
Há outro problema: o valor da propriedade pode conter os espaços reservados no formato de $ {}; portanto, outra função foi adicionada à interface é substituir os espaços reservados no valor da propriedade (Nota: os espaços reservados não são permitidos para nomes de atributos e, mesmo que existissem, os componentes não serão substituídos como espaço reservado). Quando o espaço reservado não pode ser substituído, há duas opções: mantenha -o como é ou lançar uma exceção ilegal de parâmetros. A interface específica é a seguinte:
Interface configurávelProperTyResolver:
Esta interface define como o próprio componente está configurado. Por exemplo: acabei de mencionar que, ao obter valor, você pode especificar qualquer tipo, que depende do serviço de conversão do tipo para o tipo. A interface atual fornece as configurações e a aquisição do conversionservice. Além disso, você pode configurar o formato dos espaços reservados para propriedades, incluindo: prefixo de espaço reservado (o padrão é "$ {"), sufixo de espaço reservado (o padrão é "}"), separador de valor de espaço reservado (o padrão é ":", usado para separar a propriedadeName e o defaultValue). O componente também pode definir quais atributos devem existir e também podem verificar se os atributos que devem existir realmente existem (se não existirem, uma exceção será lançada). A interface específica é a seguinte:
AbstractPropertyResolver Class:
Classe de implementação abstrata para as duas interfaces acima. Ele implementa todos os métodos da interface configurávelProperTyResolver. Em relação ao método da interface PropertyResolver, existem 3 métodos getProperty que precisam ser implementados em subclasses (outros métodos sobrecarregados chamam esses 3 métodos):
String getProperty (chave de string); <t> t getProperty (chave da string, classe <T> TargetType); <t> classe <T> getPropertyASCLASS (chave da string, classe <T> TargetType); *** A classe atual também define um método de abstrato adicional para retornar diretamente o valor obtido (sem substituição de vagas). * O método General GetProperty substituirá o espaço reservado no valor do valor por padrão e o retornará. */String abstrata protegida getPropertyAsRawString (chave da string); Quanto à substituição de espaço reservado por propriedades, é feito com a ajuda de dois objetos de assistente de espaço reservado para propriedades da propriedade PropertyPlaceHelper (classe da ferramenta), um desses dois objetos é o modo rigoroso e o outro é o modo não rigoroso.
PropertySourcesProperTyResolver Classe:
Esta classe é a única classe de implementação completa no sistema. Ele pega a coleção de origem da propriedade PropertySources (Lista <Sopersource> Lista de fontes de propriedade de propriedade internamente) como a fonte do valor da propriedade, itera através de cada propriedadesource em ordem e retornará se obtiver um valor de propriedade não nulo.