Ответ
Профили (Profiles) в Spring — это механизм условной регистрации бинов и конфигураций в зависимости от целевого окружения (development, test, production).
Объявление бина для конкретного профиля:
@Configuration
@Profile("dev") // Будет активен только при включённом профиле "dev"
public class DevDataSourceConfig {
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.build(); // H2 для разработки
}
}
@Configuration
@Profile("prod")
public class ProdDataSourceConfig {
@Bean
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:postgresql://prod-host/db");
// ... настройка пула соединений для продакшена
return new HikariDataSource(config);
}
}
Способы активации профилей:
- В
application.properties/application.yml:spring.profiles.active=dev,debug - Переменная окружения или аргумент командной строки:
java -jar app.jar --spring.profiles.active=prodexport SPRING_PROFILES_ACTIVE=prod - Программно:
SpringApplication.setAdditionalProfiles("test"); - В тестах с помощью аннотации
@ActiveProfiles("test").
Дополнительно: Можно использовать аннотацию @Profile на уровне метода @Bean. Профили могут быть отрицательными с использованием !, например, @Profile("!prod").