package fr.openwide.core.spring.config.spring.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ConfigurationLocations {
/**
* La liste des « locations » à utiliser pour le chargement des ressources.
*/
String[] locations() default {
"classpath:owsi-core-component-spring.properties",
"classpath:owsi-core-component-jpa.properties",
"classpath:configuration-private.properties",
"classpath:configuration.properties",
"file:/etc/${applicationName}/configuration.properties",
"classpath:configuration-${user}.properties"
};
/**
* Permet d'indiquer une implémentation alternative chargée de transformer les valeurs du champ
* {@link ConfigurationLocations#locations()}.
*/
Class<? extends IConfigurationLocationProvider> configurationLocationProvider()
default DefaultConfigurationLocationProvider.class;
/**
* Permet d'indiquer un ordre de chargement. Les groupes de « locations » chargés en premier sont ceux dont le
* champ {@link ConfigurationLocations#order()} est le plus faible. Les définitions de propriétés ayant la plus
* grande précédence sont les dernières chargées.
*
* <p>Nota : Les « locations » indiquées dans le champ
* {@link ConfigurationLocations#locations()} sont chargées dans l'ordre du champ.</p>
*/
int order() default Integer.MIN_VALUE;
}