1. 概述
Spring Boot 的自動配置機制嘗試根據應用程序的依賴項自動配置應用程序。
在本快速教程中,我們將看到 Spring Boot 如何在啓動時記錄其自動配置報告。
2. 示例應用程序
讓我們編寫一個簡單的 Spring Boot 應用程序,我們將用它在我們的示例中:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}3. 應用屬性配置方式
在啓動此應用程序時,我們並不會獲得太多關於 Spring Boot 如何以及為何組裝我們應用程序配置的信息。
但是,我們可以通過啓用應用程序的 application.properties 文件中的調試模式,讓 Spring Boot 創建一份報告:
debug=true
或者我們的 application.yml 文件:
debug: true4. 使用命令行方式
或者,如果我們不想使用屬性文件方法,可以通過啓動應用程序時使用 –debug 選項來觸發自動配置報告:
$ java -jar myproject-0.0.1-SNAPSHOT.jar --debug
5. 報告輸出
自動配置報告包含有關 Spring Boot 在類路徑上發現並自動配置的類的信息。它還顯示了 Spring Boot 已知的但未在類路徑上找到的類的信息。
並且,由於我們設置了debug=true,因此我們在輸出中可以看到它:
============================
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. 結論
在本快速教程中,我們學習瞭如何顯示和讀取 Spring Boot 自定義配置報告。