[英]Disable @EnableAutoConfiguration
我不知道如何摆脱@EnableAutoConfiguration
。
如果您需要找出当前正在应用的自动配置以及原因,请使用--debug开关启动应用程序
但是我找不到在外壳程序中应用了哪些自动配置。
外观如何 , 如何导入/启用应用程序所需的配置 ? 我特别感兴趣的是仅加载spring数据自动配置以进行快速运行的集成测试。
==更新==
添加
@RunWith(SpringJUnit4ClassRunner.class)
@EntityScan("persistence.entities")
@EnableJpaRepositories("persistence.repositories")
@ActiveProfiles("dev")
@Configuration
@Import({ AopAutoConfiguration.class, AopAutoConfiguration.JdkDynamicAutoProxyConfiguration.class,
AuditAutoConfiguration.class, DataSourceAutoConfiguration.class,
DataSourceAutoConfiguration.class, DataSourceAutoConfiguration.class,
DataSourcePoolMetadataProvidersConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
JpaBaseConfiguration.class, JpaRepositoriesAutoConfiguration.class,
JtaAutoConfiguration.class, ManagementServerPropertiesAutoConfiguration.class,
PersistenceExceptionTranslationAutoConfiguration.class,
PropertyPlaceholderAutoConfiguration.class, ServerPropertiesAutoConfiguration.class,
ServerPropertiesAutoConfiguration.class, SpringDataWebAutoConfiguration.class })
@EnableIntegration
@SpringApplicationConfiguration(classes = QueryTests.class)
public class QueryTests {...
我的JUnit测试现在抛出java.lang.IllegalStateException: Unable to retrieve @EnableAutoConfiguration base packages
(请参见下文)。
Caused by: java.lang.IllegalStateException: Unable to retrieve @EnableAutoConfiguration base packages
at org.springframework.boot.autoconfigure.AutoConfigurationPackages.get(AutoConfigurationPackages.java:77) ~[spring-boot-autoconfigure-1.2.5.RELEASE.jar:1.2.5.RELEASE]
at org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport.getBasePackages(AbstractRepositoryConfigurationSourceSupport.java:77) ~[spring-boot-autoconfigure-1.2.5.RELEASE.jar:1.2.5.RELEASE] ...
为了在日志中查看Spring Boot的内容,当我从IDEA运行Boot应用程序时,我在Program Arguments
添加了--debug
。 从命令行看起来像:
D:\Java\jdk8\bin\java -Didea.launcher.port=7533 "-Didea.launcher.bin.path=D:\IntelliJ IDEA\bin" -Dfile.encoding=windows-1252 -classpath "[SOME CP]" com.intellij.rt.execution.application.AppMain org.springframework.integration.samples.dsl.cafe.lambda.Application --debug
这样,我可以在控制台中看到以下内容:
=========================
AUTO-CONFIGURATION REPORT
=========================
Positive matches:
-----------------
AopAutoConfiguration
- @ConditionalOnClass classes found: org.springframework.context.annotation.EnableAspectJAutoProxy,org.aspectj.lang.annotation.Aspect,org.aspectj.lang.reflect.Advice (OnClassCondition)
- matched (OnPropertyCondition)
AopAutoConfiguration.JdkDynamicAutoProxyConfiguration
- matched (OnPropertyCondition)
GenericCacheConfiguration
- Automatic cache type (CacheCondition)
等等。
对于您的第二个问题,有两种方法:
@SpringBootApplication(exclude)
禁用不需要的自动配置@SpringBootApplication(exclude)
不要依赖Boot,而只是导入所需的配置。 例如:
@Configuration @Import({PropertyPlaceholderAutoConfiguration.class, ServerPropertiesAutoConfiguration.class, EmbeddedServletContainerAutoConfiguration.class, DispatcherServletAutoConfiguration.class}) @EnableIntegration public static class ContextConfiguration {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.