JAVA/Application

[Java] 시스템 환경변수는 System.getProperty가 아니라 System.getenv로 가져온다

히어로맛쿠키 2024. 2. 22. 03:29

🪄 문제점:

ACCESS_KEY와 SECRET_KEY가 컨테이너 환경변수 지정까지는 문제 없이 되어있으나

스프링부트에서 System.getProperty("ACCESS_KEY")로 가져오지 못한다.

 

🪄 해결:

System.getenv()는 JVM이 실행되는 OS의 환경변수를 가져오고,
System.getProperty()는 JAVA 시스템 즉 JVM에서 가져오는 것이다. 다시 말해 JVM에 국한되며, 또 다시말해 플랫폼 독립적이다. 즉 이것은 시스템 환경변수를 가져오는 메서드가 아니다. 환경변수가 Java의 시스템 속성으로서 존재하는 경우만 getProperty()로 가져올 수 있다.

 

그러나 우리 상황에서는 Java의 변수가 아닌 OS의 환경변수를 가져오는 것이기 때문에 System.getenv()를 써야 한다.

 

예시

 

 

 

✨ 의문

jar파일 실행할 때 옵션으로 -Daccess_key 지정해서 VM에 전달하고 getProperty("access_key") 했는데도 왜 안됐지?

stackoverflow에 동일한 문제를 겪으신 분이 있던데, 그거에 대한 답변은 안 달려서 아직 난제!

 

반응형