Exclude Java System properties and environment variables from SpringBoot configuration

Viewed 1640
1 Answers

You can provide your own implementation of StandardEnvironment when instancing your Spring Boot application.

For example:

public static void main(String[] args) {
    SpringApplicationBuilder applicationBuilder = new SpringApplicationBuilder(Application.class)
            .environment(new StandardEnvironment(){
                @Override
                protected void customizePropertySources(MutablePropertySources propertySources) {
                    // do not add system or env properties to the set of property sources
                }
            });
    applicationBuilder.run(args);
}

Or alternatively:

public static void main(String[] args) {
    SpringApplicationBuilder applicationBuilder = new SpringApplicationBuilder(Application.class)
            .environment(new StandardEnvironment(){
                @Override
                public Map<String, Object> getSystemEnvironment() {
                    return new HashMap<>();
                }

                @Override
                public Map<String, Object> getSystemProperties() {
                    return new HashMap<>();
                }
            });
    applicationBuilder.run(args);
}

Either way, you ensure that your application's properties do not contain any system or environment properties.

Related