Der Inhalt dieses Artikels befasst sich mit der Frage, was die @Conditional-Annotation in SpringBoot ist. Wie benutzt man es? Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Einige Funktionen der @Conditional-Annotation wurden in jüngsten Projekten verwendet, daher habe ich diesen Artikel geschrieben, um sie aufzuzeichnen
Was ist die @Conditional-Annotation? Sie kann je nach den im Code festgelegten Bedingungen unterschiedliche Beans laden. Wenn eine Schnittstelle beispielsweise zwei Implementierungsklassen hat, übergeben wir die Schnittstelle normalerweise nur zur Verwaltung Eine der Implementierungsklassen wird zur Implementierung ausgewählt. Da wir „if-else“ derzeit nicht verwenden können, wird die Annotation „@Conditional“ angezeigt.
In SpringBoot funktionieren @Conditional-Anmerkungen nicht allein. Sie sind eine Familie und wie sie verwendet werden
@ConditionalOnBean
Beispielcode
@Bean @ConditionalOnBean(RedisConnectionFactory.class) public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>(); template.setConnectionFactory(connectionFactory); template.setKeySerializer(new StringRedisSerializer()); template.afterPropertiesSet(); return template; }
Dieser Methode wurde die Annotation @ConditionalOnBean hinzugefügt, und das Attribut in der Annotation ist RedisConnectionFactory. Das bedeutet, dass ich, wenn Sie die relevanten Konfigurationsinformationen von Redis konfigurieren, die RedisTemplate für Sie instanziieren werde. Wenn Sie die relevanten Konfigurationsinformationen von Redis nicht konfigurieren, werde ich sie schließlich nicht instanziieren )
Darüber hinaus können Sie auch so spielen:
Je nach Name der Bean, @ConditionalOnMissingBean(name = „connectionFactory“) oder @ ConditionalOnMissingBean(annotation = EnableSyjRateLimit.class), Sie können verschiedene Operationen basierend auf Anmerkungen usw. ausführen
@ConditionalOnMissingBean
Dies ist nur ein Missing mehr als 1. Was bedeutet das? bedeuten? Wie der Name schon sagt, wird es instanziiert, wenn eine bestimmte Bean nicht existiert.
@ConditionalOnClass (eine Bean wird nur instanziiert, wenn eine bestimmte Klasse existiert)
@ConditionalOnMissingClass (wenn eine bestimmte Klasse nicht existiert, Eine Bean wird instanziiert)
@ConditionalOnProperty(prefix = „syj“, name = „algorithm“, gettingValue = „token“)
Das ist etwas komplizierter Dies bedeutet, dass eine Klasse instanziiert wird, wenn in der Konfigurationsdatei ein Attribut mit dem Präfix syj vorhanden ist, der Attributname „Algorithmus“ und sein Wert „Token“ lautet.
Und dieses hat auch ein besseres Attribut
@ConditionalOnProperty(prefix = „syj“, name = „algorithm“, gettingValue = „counter“, matchIfMissing = true)
Was bedeutet matchIfMissing? Das heißt, wenn nicht alle erfüllt sind, wird es standardmäßig implementiert, unabhängig davon, ob dieses Attribut syj.algorithm gleich counter
@ConditionalOnJava ist (wenn es sich um ein Java handelt). application)
@ConditionalOnWebApplication (wenn es sich um eine Webanwendung handelt)
Eigentlich haben wir, wenn es um die Mitglieder der @Conditional-Familie geht, nur über einen kleinen Teil davon gesprochen sie
Es hat ungefähr so viele Familienmitglieder:
Kinderschuhe, die mehr darüber wissen wollen, können sich auf dieses Paket beziehen
org.springframework.boot.autoconfigure.condition
Warum sind Sie tatsächlich nicht zufrieden? Zum Beispiel haben Sie SpringBoot nicht verwendet und möchten um es anzupassen. Was sollen wir jetzt also tun?
Passen Sie zuerst eine Regelklasse an
public class MyCondition implements Condition { public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { //在这里写你的逻辑,比如说你想a>0时实例化类A,a<0时不实现 return a>0; } }
Dann können Sie sie verwenden
@Bean @Conditional(MyCondition.class) public A a(){ return new A() }
Das obige ist der detaillierte Inhalt vonWas ist die @Conditional-Annotation in SpringBoot? Wie benutzt man es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!