Use system variable in spring boot [duplicate]


Use system variable in spring boot [duplicate]



This question already has an answer here:



I have defined a variable in my .bash_profile like this :


export PROFILE=local



Now, I want to get this value in my spring boot application to load different configuration files according to this value.



To do this, I used the annotation @Value but spring can't resolve the value of profile :


@Value("${profile}")
private String environment;



What have I missed ?



EDIT :
This code is launched from a JUnit test inside Eclipse (launched as desktop application)



This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.





did you try ${PROFILE}
– pvpkiran
2 days ago


${PROFILE}





Yes and it doesn't work !
– midix
2 days ago





This may help you : stackoverflow.com/questions/8168884/…
– Thoomas
2 days ago




2 Answers
2



You should add spring.profiles.active: ENV_NAME in your properties file. Or you can pass it from command line using -Dspring.profiles.active=ENV_NAME .


spring.profiles.active: ENV_NAME


-Dspring.profiles.active=ENV_NAME



EDIT:



You can also use Map<String, String> getenv = System.getenv(); to get all the environment variables in your code. Then you'll have access to all env variables.


Map<String, String> getenv = System.getenv();





I don't want to have application-dev.properties, application-prod.properties... because I don't want that api keys or other critical information are on our git repo.
– midix
2 days ago





You can use jasypt to encrypt values in properties file. Or you can any way send the same profile name through command prompt using -Dprofile=ENV_NAME and get it using @Value
– pkgajulapalli
2 days ago


jasypt


profile


-Dprofile=ENV_NAME


@Value



You can do it with the help of this Environment class.


Environment


@Autowired
Environment environment;



and then


String profile = ((StandardServletEnvironment) environment).getSystemEnvironment().get("PROFILE").toString();





It returns a null value :/
– midix
2 days ago





System properties and environment variables are two different things!
– Seelenvirtuose
2 days ago

Comments

Popular posts from this blog

paramiko-expect timeout is happening after executing the command

how to run turtle graphics in Colaboratory

Export result set on Dbeaver to CSV