Partner – Jmix-Haulmont – NPI (cat= Spring Boot)
announcement - icon

Whether you're just starting out or have years of experience, Spring Boot is a great choice for building new applications with ease.

Jmix enhances the capabilities of Spring Boot developers, allowing them to build and deliver full-stack web applications without getting their hands dirty with frontend techs. It empowers you to create everything from simple web GUI CRUD applications to complex enterprise solutions, eliminating frontend/backend separation and related security concerns.

Jmix Platform includes a framework built on top of Spring Boot, JPA, and Vaadin, and comes with Jmix Studio, an IntelliJ IDEA plugin equipped with a suite of developer productivity tools. The platform also offers out-of-the-box add-ons for report generation, BPM, maps, and more that you can use in your Jmix application or as a separate service. All technologies are interconnected to empower a single Java developer to perform at the level of a whole team, with minimal knowledge required to get started.

Plus! Jmix can instantly generate a CRUD web application, complete with its JPA data model and UI, directly from an existing database. Then, continue developing with the help of Jmix Studio.

Develop smart, not hard!

>> Become a full-stack developer with Jmix

Course – RWSB – NPI (cat=REST/Spring Boot)
announcement - icon

Now that the new version of REST With Spring - “REST With Spring Boot” is finally out, the current price will be available until the 22nd of June, after which it will permanently increase by 50$

>> GET ACCESS NOW

Course – LS – All
announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

1. Overview

This tutorial will discuss a feature added in Spring Boot 2.5 that enables the possibility to specify a prefix for system environment variables. This way, we can run multiple different Spring Boot applications in the same environment as all properties will expect a prefixed version.

2. Environment Variable Prefixes

We might need to run multiple Spring Boot applications in the same environment and often face the problem of environment variable names to assign to different properties.

We could use Spring Boot properties which, in a way, can be similar, but we also might want to set a prefix at the application level to leverage on the environment side.

Let’s set up, as an example, a simple Spring Boot application, and modify an application property, for example, the tomcat server port, by setting this prefix.

2.1. Our Spring Boot Application

Let’s create a Spring Boot application to demonstrate this feature. First, let’s add a prefix to the application. We call it “prefix” to keep it simple:

@SpringBootApplication
public class PrefixApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(PrefixApplication.class);
        application.setEnvironmentPrefix("prefix");
        application.run(args);
    }
}

We can’t use, as a prefix, a word that already contains the underscore character (_). Otherwise, the application will throw an error.

We also want to make an endpoint to check at what port our application is listening to:

@Controller
public class PrefixController {

    @Autowired
    private Environment environment;

    @GetMapping("/prefix")
    public String getServerPortInfo(final Model model) {
        model.addAttribute("serverPort", environment.getProperty("server.port"));
        return "prefix";
    }
}

In this case, we are using Thymeleaf to resolve our template while setting our server port, with a simple body like:

<html>
    // ...
<body>
It is working as we expected. Your server is running at port : <b th:text="${serverPort}"></b>
</body>
</html>

2.2. Setting Environment Variables

We can now set our environment variable like prefix_server_port to, for example, 8085. We can see how to set system environment variables, for instance, in Linux.

Once we set the environment variable, we expect the application to create properties based on that prefix.

In the case of running from an IDE, we need to edit the launch configuration and add the environment variable or pick it from environment variables that are already loaded.

2.3. Running the Application

We can now start the application from the command line or with our favorite IDE.

If we load with our browser the URL http://localhost:8085/prefix, we can see that the server is running and at the port, we prefixed earlier:

It is working as we expected. Your server is running at port : 8085

The application will start using default environment variables if not prefixed.

3. Conclusion

In this tutorial, we have seen how to use a prefix for environment variables with Spring Boot. It can help, for example, if we want to run multiple Spring Boot applications in the same environment and assign different values to a property with the same name, such as the server port.

As always, the code presented in this article is available over on GitHub.

Course – RWSB – NPI (cat=REST/Spring/Spring Boot)
announcement - icon

Now that the new version of REST With Spring - “REST With Spring Boot” is finally out, the current price will be available until the 22nd of June, after which it will permanently increase by 50$

>> GET ACCESS NOW

Course – LS – All
announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

res – REST with Spring (eBook) (everywhere)
2 Comments
Oldest
Newest
Inline Feedbacks
View all comments
Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.