0 Tage Serie
java / expert
Snippet

Fortgeschrittene benutzerdefinierte Conditionals für die Bean-Registrierung

Das Condition-Interface von Spring ermöglicht eine anspruchsvolle, programmatische Logik für die Bean-Registrierung basierend auf Umgebungseigenschaften, dem Vorhandensein von Klassen oder existierenden Beans. Dies ist entscheidend für modulare und umgebungsspezifische Anwendungen.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MultiTenantCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
String tenantMode = context.getEnvironment().getProperty("app.tenant.mode");
return "ISOLATED".equalsIgnoreCase(tenantMode);
}
}
@Configuration
public class TenantConfig {
@Bean
@Conditional(MultiTenantCondition.class)
public TenantService isolatedService() {
return new IsolatedTenantService();
}
}
spring
Erklärung
1
public class MultiTenantCondition implements Condition
Definiert eine benutzerdefinierte Bedingung durch Implementierung des Spring Condition Interfaces.
2
context.getEnvironment().getProperty("app.tenant.mode")
Ruft eine Konfigurationseigenschaft aus der Spring-Umgebung ab, um die Bedingung auszuwerten.
3
@Conditional(MultiTenantCondition.class)
Wendet die benutzerdefinierte Bedingung auf die Bean-Definition an und stellt sicher, dass sie nur registriert wird, wenn 'matches' true zurückgibt.