Auto-Konfigurationsbericht im Spring Boot anzeigen

Auto-Konfigurationsbericht im Spring Boot anzeigen

1. Überblick

Der automatische Konfigurationsmechanismus in Spring Boot versucht, eine Anwendung basierend auf ihren Abhängigkeiten automatisch zu konfigurieren.

In diesem kurzen Tutorial werdenwe’ll see how Spring Boot can log its auto-configuration report at startup time.

2. Beispielanwendung

Schreiben wir eine einfache Spring Boot-Anwendung, die wir in unseren Beispielen verwenden werden:

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

3. Ansatz der Anwendungseigenschaften

Beim Starten dieser Anwendung erhalten wir nicht viele Informationen darüber, wie oder warum Spring Boot beschlossen hat, die Konfiguration unserer Anwendung zu erstellen.

Aberwe can have Spring Boot create a report simply by enabling debug mode in unsererapplication.properties-Datei:

debug=true

Oder unsereapplication.yml Datei:

debug: true

4. Befehlszeilenansatz

Wenn wir den Ansatz der Eigenschaftendatei nicht verwenden möchten, können wir den automatischen Konfigurationsbericht mitstarting the application with the –debug switch auslösen:

$ java -jar myproject-0.0.1-SNAPSHOT.jar --debug

5. Berichtsausgabe

Der Bericht zur automatischen Konfiguration enthält Informationen zu den Klassen, die Spring Boot im Klassenpfad gefunden und automatisch konfiguriert hat. Es werden auch Informationen zu Klassen angezeigt, die Spring Boot bekannt sind, jedoch nicht im Klassenpfad gefunden wurden.

Und weil wirdebug=true gesetzt haben, sehen wir es in unserer Ausgabe:

============================
CONDITIONS EVALUATION REPORT
============================


Positive matches:
-----------------

   AopAutoConfiguration matched:
      - @ConditionalOnClass found required classes 'org.springframework.context.annotation.EnableAspectJAutoProxy',
        'org.aspectj.lang.annotation.Aspect', 'org.aspectj.lang.reflect.Advice', 'org.aspectj.weaver.AnnotatedElement';
        @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
      - @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition)

   AopAutoConfiguration.CglibAutoProxyConfiguration matched:
      - @ConditionalOnProperty (spring.aop.proxy-target-class=true) matched (OnPropertyCondition)

   AuditAutoConfiguration#auditListener matched:
      - @ConditionalOnMissingBean (types: org.springframework.boot.actuate.audit.listener.AbstractAuditListener;
        SearchStrategy: all) did not find any beans (OnBeanCondition)

   AuditAutoConfiguration.AuditEventRepositoryConfiguration matched:
      - @ConditionalOnMissingBean (types: org.springframework.boot.actuate.audit.AuditEventRepository;
        SearchStrategy: all) did not find any beans (OnBeanCondition)

   AuditEventsEndpointAutoConfiguration#auditEventsEndpoint matched:
      - @ConditionalOnBean (types: org.springframework.boot.actuate.audit.AuditEventRepository;
        SearchStrategy: all) found bean 'auditEventRepository';
        @ConditionalOnMissingBean (types: org.springframework.boot.actuate.audit.AuditEventsEndpoint;
        SearchStrategy: all) did not find any beans (OnBeanCondition)
      - @ConditionalOnEnabledEndpoint no property management.endpoint.auditevents.enabled found
        so using endpoint default (OnEnabledEndpointCondition)


Negative matches:
-----------------

   ActiveMQAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required classes 'javax.jms.ConnectionFactory',
           'org.apache.activemq.ActiveMQConnectionFactory' (OnClassCondition)

   AopAutoConfiguration.JdkDynamicAutoProxyConfiguration:
      Did not match:
         - @ConditionalOnProperty (spring.aop.proxy-target-class=false) did not find property
           'proxy-target-class' (OnPropertyCondition)

   ArtemisAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required classes 'javax.jms.ConnectionFactory',
           'org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory' (OnClassCondition)

   AtlasMetricsExportAutoConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'io.micrometer.atlas.AtlasMeterRegistry'
           (OnClassCondition)

   AtomikosJtaConfiguration:
      Did not match:
         - @ConditionalOnClass did not find required class 'com.atomikos.icatch.jta.UserTransactionManager'
           (OnClassCondition)

6. Fazit

In diesem kurzen Lernprogramm wurde gezeigt, wie ein Bericht zur automatischen Konfiguration von Spring Boot angezeigt und gelesen wird.

Und wie immer kann der Quellcode für das obige Beispielover on GitHub gefunden werden.