Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Accessing System Variables Inside Spring Apps

DZone's Guide to

Accessing System Variables Inside Spring Apps

· Java Zone ·
Free Resource

Download Microservices for Java Developers: A hands-on introduction to frameworks and containers. Brought to you in partnership with Red Hat.

Sometimes it is mandatory to to use environment/system variables or jvm parameters to make the applicaiton to work as expected in different environments.

Example for one such case is identifying whether application is deployed in development, test or production environments. 

Based on environment identification, your app may need to connect to different systems like database- dev/test/prod. 

Or based on the environment identification you may need to load different properties/configuration embedded in jars.

If you use DI with spring and would like to access system properties inside spring context, you need to know that spring inject the implicit java bean 'systemProperties' where all environment variables are stored in it with key value pair.

The variables can be accessed using following syntaxt inside the bean context files.

#{systemProperties[yourkey]}  
or
#{systemProperties.yourkey}
Let's see this with example.
You can access the command line paramter 'app.environment' inside app context file as,
<bean id="yourBean" class="com.company.YourBean">
    <property name="environment" value="#{ systemProperties['app.environment'] }"/>
    <!-- other properties goes here....-->
</bean>

You can supply app.environment varialble as,

  • commandline param:  java -Dapp.environment=DEV ....
  •  Windows environment varilable
set app.environment=DEV or you can configure throw computer properties->advanced->environment varilables popup
  •  UNIX/LINUX
export app.environment=DEV

Download Building Reactive Microservices in Java: Asynchronous and Event-Based Application Design. Brought to you in partnership with Red Hat

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}