The Context-Aware Configuration implementation provides a set of Service Provider Interfaces (SPI) that allows you to overlay, enhance or replace the default implementation and adapt it to your needs.
Please use the SPI with care, and first check if the Default Implementation does not already fulfill your needs.
All SPIs share a common principle:
All existing implementations are iterated in order of their service ranking.
By providing an implementation of org.apache.sling.caconfig.resource.spi.ContextPathStrategy
you can provide additional ways how context paths and their configuration references are detected in your content resource hierarchy.
E.g. you could implement detecting context paths by project-specific conventions.
By providing an implementation of org.apache.sling.caconfig.resource.spi.ConfigurationResourceResolvingStrategy
you can define where configuration data is looked up, and how resource and property inheritance is handled.
By providing an implementation of org.apache.sling.caconfig.spi.ConfigurationInheritanceStrategy
you can define if and how resources are inherited across the inheritance chain.
By providing an implementation of org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy2
you can define the persistence structure of the configuration within the configuration resources.
E.g. you could use a specific JCR node type or slightly different content structure to store the configuration data.
By providing an implementation of org.apache.sling.caconfig.spi.ConfigurationMetadataProvider
you can provide information about configuration metadata from other sources than annotation classes.
By providing an implementation of org.apache.sling.caconfig.spi.ConfigurationOverrideProvider
you can provide your own overrides - if the built-in override providers do not fit your needs.
See Override for the list of built-in providers and the override syntax.