Profiles are a useful feature of Spring Boot that allow you to define different configurations for different environments (e.g. development, testing, production). By using profiles, you can easily switch between different sets of configurations without having to modify your code.
Here is an example of how to define and use profiles in Spring Boot:
Define a profile-specific properties file: Create a properties file that contains configuration properties specific to a particular profile. For example, you could create a application-dev.properties file for development-specific configuration: properties
spring.datasource.url=jdbc:mysql://localhost:3306/myapp_dev
spring.datasource.username=dev_user
spring.datasource.password=dev_password
Activate the profile: In order to activate the profile, you need to set the spring.profiles.active property. This can be done in several ways:
By setting the system property -Dspring.profiles.active=dev when starting the application.
By setting an environment variable SPRING_PROFILES_ACTIVE=dev before starting the application.
By setting the property in the application.properties file: spring.profiles.active=dev.
Use the profile-specific properties: Once the profile is activated, Spring Boot will automatically load the corresponding profile-specific properties file, and use those properties instead of the default properties. For example, in the above application-dev.properties file, the database URL, username, and password are set to values specific to the development environment.
Here is an example of how to use profiles in a Spring Boot application:
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
In the example above, we have a simple Spring Boot application. In order to use profiles, we need to create profile-specific properties files in the src/main/resources directory. For example, we could create a application-dev.properties file for development-specific configuration.
Here is an example of how to activate the profile using the application.properties file:
properties
spring.profiles.active=dev
In the example above, we have set the spring.profiles.active property to dev, which will activate the application-dev.properties file.
Here is an example of how to use the profile-specific properties in a configuration class:
@Configuration
public class MyConfig {
@Value("${spring.datasource.url}")
private String datasourceUrl;
@Value("${spring.datasource.username}")
private String datasourceUsername;
@Value("${spring.datasource.password}")
private String datasourcePassword;
// ...
}
In the example above, we have created a configuration class called MyConfig that uses the @Value annotation to inject the profile-specific database URL, username, and password into the configuration properties.
Overall, profiles are a powerful and flexible way to manage environment-specific configurations in Spring Boot. By defining profile-specific properties files and activating the appropriate profile, you can easily switch between different sets of configurations without having to modify your code.