Je veux accéder aux valeurs fournies dans application.properties
, par exemple:
logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR logging.file=${HOME}/application.log userBucket.path=${HOME}/bucket
Je veux accéder à userBucket.path
dans mon programme principal dans une application Spring Boot.
Vous pouvez utiliser l’annotation @Value
et accéder à la propriété dans n’importe quel bean Spring que vous utilisez.
@Value("${userBucket.path}") private Ssortingng userBucketPath;
La section Configuration externalisée des documents Spring Boot explique tous les détails dont vous pourriez avoir besoin.
Une autre façon consiste à injecter de l’environnement dans votre haricot.
@Autowired private Environment env; .... public void method() { ..... Ssortingng path = env.getProperty("userBucket.path"); ..... }
@ConfigurationProperties
peut être utilisé pour mapper des valeurs de .yml
( .yml
également sockets en charge) vers un POJO.
Considérons le fichier exemple suivant.
.Propriétés
cust.data.employee.name=Sachin cust.data.employee.dept=Cricket
Employee.java
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @ConfigurationProperties(prefix = "cust.data.employee") @Configuration("employeeProperties") public class Employee { private Ssortingng name; private Ssortingng dept; //Getters and Setters go here }
Maintenant, la valeur des propriétés peut être accédée par autowiring employeeProperties
comme suit.
@Autowired private Employee employeeProperties; public void method() { Ssortingng employeeName = employeeProperties.getName(); Ssortingng employeeDept = employeeProperties.getDept(); }
Vous pouvez utiliser @Value
pour charger des variables à partir de application.properties
si vous utilisez cette valeur à un seul endroit, mais si vous avez besoin d’un moyen plus centralisé pour charger ces variables, @ConfigurationProperties
est une meilleure approche.
De plus, vous pouvez charger des variables et les lancer automatiquement si vous avez besoin de différents types de données pour effectuer vos validations et votre logique métier.
application.properties custom-app.enable-mocks = false @Value("${custom-app.enable-mocks}") private boolean enableMocks;