繁体   English   中英

禁用@EnableAutoConfiguration

[英]Disable @EnableAutoConfiguration

我不知道如何摆脱@EnableAutoConfiguration

Spring Boot文档中提到

如果您需要找出当前正在应用的自动配置以及原因,请使用--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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM