Sobes.tech
Senior

What are Spring Profiles and how to configure an application for different environments? How to influence the bean creation process?

sobes.tech AI

Answer from AI

Spring Profiles allow you to separate application configuration for different environments (e.g., dev, test, prod). This is convenient for managing settings and creating environment-specific beans.

To use profiles:

  • You can specify settings for a particular profile in application.properties or application.yml, for example application-dev.properties.
  • Activate a profile via a startup parameter: -Dspring.profiles.active=dev or through environment variables.

Annotations are used to influence bean creation:

@Configuration
@Profile("dev")
public class DevConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean("dev config");
    }
}

@Configuration
@Profile("prod")
public class ProdConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean("prod config");
    }
}

Thus, depending on the active profile, Spring will create the corresponding beans. This allows flexible changes to application behavior without modifying the code.