[JAVA] Wechseln Sie die Beans mit den kanonischen Ausdrücken @ConditionalOnExpression und SpEL

Angenommen, Sie möchten Beans wechseln, die basierend auf den Werten in der Spring-Boot-Eigenschaftendatei registriert sind. Außerdem möchte ich die zu registrierende Bean wechseln, je nachdem, wann der Eigenschaftswert mit einem bestimmten regulären Ausdruck übereinstimmt.

Verwenden Sie in diesem Fall einen regulären Ausdruck in SpEL von `` `@ ConditionalOnExpression```.

Quellcode

Eigenschaftendatei

Angenommen, ein Eigenschaftswert kann `v0004``` von `v0001``` annehmen.

src/main/resources/application.yml


oncondition:
#  value: v0001
#  value: v0002
#  value: v0003
  value: v0004

Zu diesem Zeitpunkt wird angenommen, dass die Bean zwischen dem Fall von "v0001" und "v0003" und dem Fall von "v0004" umgeschaltet werden soll.

Klassen, die gewechselt werden können

Erstellen Sie eine geeignete Schnittstelle.

public interface ISample {
    String value();
}
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;

@Component
@ConditionalOnExpression("#{'${oncondition.value}' matches 'v000[123]'}")
public class Value123 implements ISample {
    @Override
    public String value() {
        return "value123";
    }
}
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;

@Component
@ConditionalOnExpression("#{'${oncondition.value}' matches 'v0004'}")
public class Value4 implements ISample {
    @Override
    public String value() {
        return "value4";
    }
}

@ConditionalOnExpression ist aktiviert, wenn SpEL übereinstimmt. Hier${oncondition.value}Durchsuchen Sie die Eigenschaften mit den Übereinstimmungen mit regulären Ausdrücken'v000[123]'Wird beschrieben. Dies macht Bedingung.Wert ist v0001,v0002,Diese Klasse ist gültig für v0003.



## Lauf
 Die am Ende zu überprüfende Startklasse.

```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App implements CommandLineRunner {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Autowired
    ISample hoge;
    
    @Override
    public void run(String... args) throws Exception {
        System.out.println(hoge.value());
    }
}

Recommended Posts

Wechseln Sie die Beans mit den kanonischen Ausdrücken @ConditionalOnExpression und SpEL
Unterscheiden Sie mit regulären Ausdrücken zwischen ganzen Zahlen und Brüchen
[Ruby] Schließen Sie bestimmte Muster aus und ersetzen Sie sie durch reguläre Ausdrücke
Analysieren Sie japanische Adressen mit regulären Ausdrücken
Einfach mit regulären Java-Ausdrücken zu stolpern
Schalter und EnumMap
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
[RSpec] WebMock verarbeitet reguläre Ausdrücke und Array-Abfragezeichenfolgen