Как получить доступ к значению, определенному в приложении.файл свойств в 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 ответа:
можно использовать
@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;