Adnotările @Conditional în Spring Boot în Spring Boot

core Spring Boot 3.x / Java 17+ Q&A / Distribuie cod

Explicația adnotărilor de auto-configurare condiționată: @ConditionalOnProperty, @ConditionalOnClass și @ConditionalOnMissingBean.

Sintaxă
@ConditionalOnProperty(prefix = "app", name = "feature.enabled")

Mecanismul de Auto-Configuration din Spring Boot se bazează masiv pe adnotările din familia @Conditional. Acestea permit înregistrarea unui bean sau a unei clase de configurare doar dacă anumite condiții de mediu sunt satisfăcute.

  • @ConditionalOnProperty: Verifică dacă o anumită proprietate din fișierul de configurare are o valoare specifică (de exemplu true).
  • @ConditionalOnClass: Verifică dacă o clasă sau bibliotecă externă se află în classpath (de exemplu driverul PostgreSQL).
  • @ConditionalOnMissingBean: Permite declararea unui bean de rezervă (fallback), care va fi creat doar dacă utilizatorul nu a definit deja propriul său bean cu acel tip.
Exemplu: Activare condiționată prin proprietăți și fallback bean
package ro.dexblog.demo.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AuditAutoConfiguration {

    // Se creează doar dacă 'app.audit.enabled=true' în application.yml
    @Bean
    @ConditionalOnProperty(prefix = "app.audit", name = "enabled", havingValue = "true", matchIfMissing = false)
    public AuditService databaseAuditService() {
        return new DatabaseAuditService();
    }

    // Fallback: dacă nu există niciun AuditService definit, folosim NoOpAuditService
    @Bean
    @ConditionalOnMissingBean(AuditService.class)
    public AuditService noOpAuditService() {
        return new NoOpAuditService();
    }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Adnotările @Conditional în Spring Boot

Ai o nelămurire despre utilizarea comenzii Adnotările @Conditional în Spring Boot sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.