Как получить доступ к значению, определенному в приложении.файл свойств в Spring Boot


Я хочу получить доступ к значениям, указанным в application.properties, например:

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
logging.file=${HOME}/application.log

userBucket.path=${HOME}/bucket

Я хочу получить доступ к userBucket.path в моей основной программе в приложении Spring Boot.

4 149

4 ответа:

можно использовать @Value аннотация и доступ к свойству в любом весеннем Бобе, который вы используете

@Value("${userBucket.path}")
private String userBucketPath;

The Внешние Конфигурации раздел документов Spring Boot, объясняет все детали, которые вам могут понадобиться.

другой способ-это инъекция среды в ваш Боб.

@Autowired
private Environment env;
....

public void method() {
    .....  
    String path = env.getProperty("userBucket.path");
    .....
}

@ConfigurationProperties можно использовать для отображения значений из .properties (.yml также поддерживается) в POJO.

рассмотрим следующий пример файла.

.свойства

cust.data.employee.name=Sachin
cust.data.employee.dept=Cricket

сотрудник.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 String name;
    private String dept;

    //Getters and Setters go here
}

теперь значение свойства можно получить с помощью autowiring employeeProperties следующим образом.

@Autowired
private Employee employeeProperties;

public void method() {

   String employeeName = employeeProperties.getName();
   String employeeDept = employeeProperties.getDept();

}

можно использовать @Value для загрузки переменных из application.properties Если вы будете использовать это значение в одном месте, но если вам нужен более централизованный способ, чтобы загрузить эти переменные @ConfigurationProperties - Это лучший подход.

кроме того, вы можете загружать переменные и автоматически приводить их, если вам нужны разные типы данных для выполнения ваших проверок и бизнес-логики.

application.properties
custom-app.enable-mocks = false

@Value("${custom-app.enable-mocks}")
private boolean enableMocks;