Я пытаюсь установить некоторые учетные данные API в файле свойств загрузки Spring "application.property", используя переменные среды. Мои переменные окружения выглядят так:
export ACCOUNT_SID ="some value"
export AUTH_TOKEN="some value"
Теперь, когда я запускаю команду echo, я получаю «некоторое значение» для каждой переменной, и даже когда я запускаю System.getenv («ACCOUNT_SID») в обычном java приложение. Однако, когда я устанавливаю значения в файле свойств, все, что я получаю, это строки "$ {ACCOUNT_SID}" и "$ {AUTH_TOKEN}", вставленные в мои поля POJO. то есть предположим следующую конфигурацию в моем файле application.property:
twilio.account_sid=${ACCOUNT_SID}
twilio.auth_token=${AUTH_TOKEN}
Где ACCOUNT_SID и AUTH_TOKEN - мои переменные среды. Затем я устанавливаю свой POJO следующим образом:
@Configuration
@ConfigurationProperties(prefix="twilio")
public class TwilioConfig {
private String accountSid;
private String authToken;
geters/setters
}
Когда я запускаю это и пытаюсь напечатать значения полей, я получаю $ {ACCOUNT_SID} и $ {AUTH_TOKEN}, напечатанные в консоли. Основной файл java выглядит так:
@SpringBootApplication
public class SmshotlineApplication implements CommandLineRunner {
@Autowired
private TwilioConfig twilio;
@Override
public void run(String... args) throws Exception {
// TODO Auto-generated method stub
System.out.println("ACCOUNT_SID="+twilio.getAccountSid());
System.out.println("ACCOUNT_SID="+twilio.getAuthToken());
}
public static void main(String[] args) {
SpringApplication.run(SmshotlineApplication.class, args);
}
}
Я даже пытаюсь ввести значение, используя аннотацию @Value для переменных. Когда я тестировал с использованием переменной среды JAVA_HOME, я фактически должен был напечатать путь, но когда я попытался сделать то же самое с моими определенными переменными среды, программа потерпела крах, потому что значения не могли быть найдены. Поэтому я должен был указать значение по умолчанию, которое будет напечатано. пример ниже.
@SpringBootApplication
public class SmshotlineApplication implements CommandLineRunner {
@Value("${java.home}")
String javaHome;
@Value("${account.sid:DEFAULT}")
String ACCOUNT_SID;
@Value("${auth.token:DEFAULT}")
String AUTH_TOKEN;
@Override
public void run(String... args) throws Exception {
// TODO Auto-generated method stub
System.out.println("ACCOUNT_SID="+ACCOUNT_SID);
System.out.println("ACCOUNT_SID="+AUTH_TOKEN);
System.out.println("JAVA_HOME="+javaHome);
}
public static void main(String[] args) {
SpringApplication.run(SmshotlineApplication.class, args);
}
}
Пожалуйста, помогите мне понять или понять, что я делаю неправильно. Если переменные не видны программой, это заставляет меня думать, что я неправильно устанавливаю переменные среды. Но в то же время это сбивает меня с толку, потому что когда я использую System.getenv () в обычной (не с пружинной загрузкой Java) программе, я получаю для печати значения! Я использую Ma c OS Catalina, и мой env var хранится в моем профиле ~ / .profile.