baeldung 2024-01-08
1. 概述
Spring Boot 的自动配置机制会根据应用程序的依赖项尝试自动配置应用。
在本篇快速教程中,我们将了解如何让 Spring Boot 在启动时记录其自动配置报告。
2. 示例应用程序
让我们编写一个简单的 Spring Boot 应用程序,用于后续示例:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
3. 使用 application.properties 配置方式
启动该应用程序时,默认不会输出太多关于 Spring Boot 如何或为何决定组合应用程序配置的信息。
但我们只需在 application.properties 文件中启用调试模式,即可让 Spring Boot 生成一份自动配置报告:
debug=true
或者,在 application.yml 文件中:
debug: true
4. 命令行方式
如果我们不想使用配置文件的方式,也可以在启动应用程序时通过 --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 的自动配置报告。