У меня есть переменная окружения RESOURCES_FOLDER. Что я хочу прочитать в классе внутри моего приложения Springboot
@Value("${RESOURCES_FOLDER}")
private static String resourcesFolder;
Когда я пытаюсь напечатать значение, оно дает null вместо того, чтобы печатать фактический путь в моей переменной среды. Может ли кто-нибудь помочь мне с этим ??
Spring не позволяет вводить значения в статические поля. У вас есть несколько вариантов обойти это ограничение:
resourceFolder
будет общим для всех экземпляров класса. Тем не менее, вы должны быть в состоянии достичь этого:public class SomeClass {
...
public static String resourcesFolder;
@Value("${RESOURCES_FOLDER}")
public void setResourcesFolder(String resourcesFolder) {
this.resourcesFolder = resourcesFolder;
}
...
}
@ConfigurationProperties
, объявите поля как приватные нестатические, создайте для него геттеры/сеттеры и внедрите класс везде, где вам нужна переменная. Это очень компонуемый и тестируемый подход, который я бы порекомендовал, особенно если у вас довольно много связанных свойств.В качестве альтернативы, пожалуйста, обратитесь к другим подобным вопросам: 1, 2.
Добавьте имя переменной среды в файл application.properties:
RESOURCE_FOLDER_PATH =${RESOURCES_FOLDER}
Здесь RESOURCES_FOLDER
— имя вашей переменной окружения.
Затем получите доступ к переменной среды в классе Java, используя аннотацию @value
.
public class AccessEnvironmentVariable{
@Value("${RESOURCE_FOLDER_PATH}")
private String RESOURCE_FOLDER;
private void displayEnvironmentVariable(){
System.out.println("Your environment variable Resource Folder: "+RESOURCE_FOLDER);
}
}