This article is helping you to explore the simple but elegant concept is Profiles for spring boot developers. If you are a developer you definitely come across scenarios like maintaining the different configurations for dev, QA, SIT, UAT, and PROD environments. The number of environments may differ but at least two or two plus environments most the organizations have.
Let us consider one more scenario where you want to enable or disable a few things based on the user having a free or paid profile. Spring Boot provides out-of-scope support to handle this kind of scenario.
Spring Boot provides profiles that help to create environment-specific configurations and stereotypes in the applications. Any @Component
, @Configuration
or @ConfigurationProperties
can be marked with @Profile
to limit when it is loaded.
@Component
@Profile("dev")
public class DummyProductsComponent {
// implementation
}
In the above snippet, you mentioned that this component is only for the dev profile. If you want to mention all other profiles apart from the dev profile then use an exclamation ( ! ) mark before dev like this @Profile("!dev")
If you want to learn more about the Spring Cloud Config server hit the below links:
Set Profile:
Setting up the spring.profiles.active
will specify the active profile of the running instance. This property can be set via different methods using the application.properties
, command-line, or environment variables.
While running jar using the command line use the below command to set the profile
java -jar -Dspring.profiles.active=dev profieldemoapplication.jar
OR
java -jar profieldemoapplication.jar --spring.profiles.active=dev
While setting in environment variables.
export spring_profiles_active=dev
Above all ways are non-programatic ways or non-code changes. You can even set a profile using code changes or programmatically in two ways, the first one using ConfigurableEnvironment class and another one using SpringApplication.
@Autowired
private ConfigurableEnvironment env;
#some code
env.setActiveProfiles("dev");
OR
SpringApplication app = new SpringApplication(Main.class);
app.setAdditionalProfiles("dev");
Till now you just now you can activate or set one single profile as an active profile but there are situations where you want to set multiple profiles as an active. Don't worry spring boot provides support from the 2.4 version onwards that's known as the profile group.
spring.profiles.group.development[0]=devsqldb
spring.profiles.group.development[1]=devnosqldb
Conclusion:
In this article, you learn a very simple but important concept like spring boot profile. This helps to reduce your effort by hours. You can set the profile in a different way like CLI, configurations, and programmatically even you can set one single profile or more than one. Let me know in the comments if you have any interesting use-case for profiles.
More such articles:
https://www.youtube.com/channel/UCiTaHm1AYqMS4F4L9zyO7qA
==========================**=========================
If this article adds any value for you then please clap and comment.
Let’s connect on Stackoverflow, LinkedIn, & Twitter.