En utilisant une construction telle que
@Component
public class SomeClass {
@Inject
private Environment env;
private String key;
@PostConstruct
private void init() {
key = env.getProperty("SOME_KEY_PROPERTY");
}
....
}
il est possible d'attribuer un champ avec une propriété.
Existe-t-il un formulaire plus court et plus concis pour le faire?
@Component
public class SomeClass {
@Value("#{environment.SOME_KEY_PROPERTY}")
private String key;
....
}
Vous devriez pouvoir le faire (en supposant que vous avez un PropertySourcesPlaceHolderConfigurer enregistré)
@Value("${SOME_KEY_PROPERTY}")
private String key;
Vous pouvez également trouver utile de fournir une valeurdefaultau cas où la variable ne serait pas définie:
@Value("${some_property:default_value}")
private String key;
Sinon, vous obtiendrez une exception chaque fois que some_property
n'est pas défini.
default_value
peut aussi être vide, dans ce cas il se comportera comme si some_property
était optionnel:
@Value("${some_property:}")
private String key;
(Remarquez les deux points)
Si la valeur par défaut contient des caractères spéciaux (points, points du côlon, etc.), placez-les dans SpEL comme ceci:
@Value("${some_property:#{'default_value'}}")
private String key;
Si vous devez ajouter une variable d’environnement comme valeur par défaut.
@Value("${awsId:#{environment.AWS_ACCESS_KEY_ID}}")
@Value("${awsSecret:#{environment.AWS_SECRET_ACCESS_KEY}}")
Ceci est une combinaison de deux réponses précédentes.