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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MultiTenantCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {String tenantMode = context.getEnvironment().getProperty("app.tenant.mode");return "ISOLATED".equalsIgnoreCase(tenantMode);}}@Configurationpublic 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.