Spring Boot is simply fantastic. It’s so ergonomic, I could write microservices for days. But, sometimes, you run into a problem, and you need to find out what configuration your app is using. That can seem difficult. Fortunately, Spring Boot’s Actuator helps. Let’s see how.
Spring Boot Actuator is your friend
The Actuator is where all of Spring Boot’s admin and monitoring “stuff” lives.
The Actuator is a set of endpoints for monitoring and application admin.
In Spring Boot 2.x, all of its management features are wrapped up in a component called the Actuator. The Actuator is a set of HTTP endpoints, which you can use to monitor and interact with your app, do health-checks, and more.
In the Actuator, there are several different sub-endpoints, like
Each of these endpoints exposes some information about your application, which might be useful during development or even in production.
Fortunately, one of these endpoints exposes environment information.
Let’s see how to use it.
Using the Actuator to list all application properties
To see all properties in your Spring Boot application, enable the Actuator endpoint called
env. This enables an HTTP endpoint which shows all the properties of your application’s environment.
You can do this by setting the property
management.endpoints.web.exposure.include in your
This property accepts a comma-separated list of the actuator endpoints that you want to expose (see here for them all).
The endpoint we’re interested in is
env. You can enable it on its own, or combine it with other endpoints like
health (which exposes application health info at
Here’s what that looks like:
# Enable the env endpoint management.endpoints.web.exposure.include=env # Or, enable the health and env endpoints management.endpoints.web.exposure.include=env,health
Now restart your app, and you should be able to see all of your environment config at:
So, if you want to see all of your application’s configuration properties (like those from
application.properties, or from environment variables), then enable the
env Actuator endpoint.
There’s also a really useful (and not very well-known!) trick that you can do with this
To inspect the value of a single property, add its name to the end of the URL
Once you’ve enabled the
env Actuator endpoint, you can also look up the value of any single property, by appending it to the URL, like
This endpoint will show you the value of a property, and exactly how its value was determined.
In my example here, I already set a property called
favourite.cheese in my properties file. Then, I set an environment variable
FAVOURITE_CHEESE, which overrides the value to
roquefort (Roquefort is a very nice cheese):
This trick lets you see the exact value that Spring Boot is using for a property, and why.
So, you can potentially figure out whether you’re talking to your dev database as expected, or….. whether you’re accidentally talking to production. (Oops.)
You might find this useful when you’re using environment variables to override Spring Boot properties in Kubernetes.
You probably don’t want to enable this feature in production
I’ll leave you with a final bit of advice: you probably don’t want to enable this in production.
What’s the risk, seriously?
If you enable your
env endpoint in production, you could be exposing database passwords, message broker passwords, private keys and tons of other sensitive stuff.
So, unless you really need to expose this information in production, keep its use to development only!
Got any thoughts on what you've just read? Anything wrong, or no longer correct? Sign in with your GitHub account to leave a comment.
(All comments get added as Issues in our GitHub repo here, using the comments tool Utterances)