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```.
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.
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