Par exemple, supposons que vous souhaitiez changer les beans enregistrés en fonction des valeurs du fichier de propriétés spring-boot. De plus, je souhaite changer le bean à enregistrer en fonction du moment où la valeur de la propriété correspond à une certaine expression régulière.
Dans ce cas, utilisez une expression régulière dans SpEL de
@ ConditionalOnExpression```.
Supposons maintenant qu'une valeur de propriété puisse prendre
v0004 de` `` v0001
.
src/main/resources/application.yml
oncondition:
# value: v0001
# value: v0002
# value: v0003
value: v0004
À ce stade, on suppose que le bean doit être commuté entre le cas de
v0001 à` `` v0003
et le cas de` `` v0004```.
Créez une interface appropriée.
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 est activé lorsque SpEL correspond. ici${oncondition.value}Parcourir les propriétés avec les correspondances d'expression régulière'v000[123]'Est décrit. Cela rend oncondition.la valeur est v0001,v0002,Cette classe est valable pour v0003.
## Courir
La classe de démarrage à vérifier à la fin.
```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