org.springframework.core.env

## Interface ConfigurablePropertyResolver

- All Superinterfaces:
    PropertyResolver
  All Known Subinterfaces:
    ConfigurableEnvironment, ConfigurableWebEnvironment
  All Known Implementing Classes:
    AbstractEnvironment, AbstractPropertyResolver, MockEnvironment, PropertySourcesPropertyResolver, StandardEnvironment, StandardPortletEnvironment, StandardServletEnvironment

      public interface ConfigurablePropertyResolver
      extends PropertyResolver

  Configuration interface to be implemented by most if not all `PropertyResolver` types. Provides facilities for accessing and customizing the `ConversionService` used when converting property values from one type to another.
  Since:
    3.1
  Author:
    Chris Beams

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `ConfigurableConversionService` | `getConversionService()`
    `void` | `setConversionService(ConfigurableConversionService conversionService)` Set the `ConfigurableConversionService` to be used when performing type conversions on properties.
    `void` | `setIgnoreUnresolvableNestedPlaceholders(boolean ignoreUnresolvableNestedPlaceholders)` Set whether to throw an exception when encountering an unresolvable placeholder nested within the value of a given property.
    `void` | `setPlaceholderPrefix(String placeholderPrefix)` Set the prefix that placeholders replaced by this resolver must begin with.
    `void` | `setPlaceholderSuffix(String placeholderSuffix)` Set the suffix that placeholders replaced by this resolver must end with.
    `void` | `setRequiredProperties(String... requiredProperties)` Specify which properties must be present, to be verified by `validateRequiredProperties()`.
    `void` | `setValueSeparator(String valueSeparator)` Specify the separating character between the placeholders replaced by this resolver and their associated default value, or `null` if no such special character should be processed as a value separator.
    `void` | `validateRequiredProperties()` Validate that each of the properties specified by `setRequiredProperties(java.lang.String...)` is present and resolves to a non-`null` value.

    - ### Methods inherited from interface org.springframework.core.env.PropertyResolver

      `containsProperty, getProperty, getProperty, getProperty, getProperty, getPropertyAsClass, getRequiredProperty, getRequiredProperty, resolvePlaceholders, resolveRequiredPlaceholders`

- - ### Method Detail

    - #### getConversionService

          ConfigurableConversionService getConversionService()

      Returns:
        the `ConfigurableConversionService` used when performing type conversions on properties.

        The configurable nature of the returned conversion service allows for the convenient addition and removal of individual `Converter` instances:

             ConfigurableConversionService cs = env.getConversionService();
             cs.addConverter(new FooConverter());

      See Also:
        `PropertyResolver.getProperty(String, Class)`, `ConverterRegistry.addConverter(org.springframework.core.convert.converter.Converter<?, ?>)`

    - #### setConversionService

          void setConversionService(ConfigurableConversionService conversionService)

      Set the `ConfigurableConversionService` to be used when performing type conversions on properties.

      Note: as an alternative to fully replacing the `ConversionService`, consider adding or removing individual `Converter` instances by drilling into `getConversionService()` and calling methods such as `#addConverter`.

      See Also:
        `PropertyResolver.getProperty(String, Class)`, `getConversionService()`, `ConverterRegistry.addConverter(org.springframework.core.convert.converter.Converter<?, ?>)`

    - #### setPlaceholderPrefix

          void setPlaceholderPrefix(String placeholderPrefix)

      Set the prefix that placeholders replaced by this resolver must begin with.

    - #### setPlaceholderSuffix

          void setPlaceholderSuffix(String placeholderSuffix)

      Set the suffix that placeholders replaced by this resolver must end with.

    - #### setValueSeparator

          void setValueSeparator(String valueSeparator)

      Specify the separating character between the placeholders replaced by this resolver and their associated default value, or `null` if no such special character should be processed as a value separator.

    - #### setRequiredProperties

          void setRequiredProperties(String... requiredProperties)

      Specify which properties must be present, to be verified by `validateRequiredProperties()`.

    - #### validateRequiredProperties

          void validateRequiredProperties()
                                   throws MissingRequiredPropertiesException

      Validate that each of the properties specified by `setRequiredProperties(java.lang.String...)` is present and resolves to a non-`null` value.
      Throws:
        `MissingRequiredPropertiesException` - if any of the required properties are not resolvable.

    - #### setIgnoreUnresolvableNestedPlaceholders

          void setIgnoreUnresolvableNestedPlaceholders(boolean ignoreUnresolvableNestedPlaceholders)

      Set whether to throw an exception when encountering an unresolvable placeholder nested within the value of a given property. A `false` value indicates strict resolution, i.e. that an exception will be thrown. A `true` value indicates that unresolvable nested placeholders should be passed through in their unresolved ${...} form.

      Implementations of `PropertyResolver.getProperty(String)` and its variants must inspect the value set here to determine correct behavior when property values contain unresolvable placeholders.

      Since:
        3.2