@ImportAutoConfiguration和@Import有什么区别

mic*_*ldo 7 spring-boot spring-java-config

是否真的org.springframework.boot.autoconfigure.ImportAutoConfiguration是改进替换org.springframework.context.annotation.Import因为同样和另外尊重

@AutoConfigureBefore,@AutoConfigureAfter@AutoConfigureOrder

Yos*_*har 7

是不是真的 org.springframework.boot.autoconfigure.ImportAutoConfiguration是改进的替代品 org.springframework.context.annotation.Import

不,它不是替代品,因为它是@ImportAutoConfiguration特定于 Spring Boot 的注释,我可能称之为增强。但是,尽管在使用 Spring Boot 时似乎可以互换使用它们,但我不建议这样做。请按预期使用它们。


你会使用@ImportAutoConfiguration,当你不希望启用使用默认自动配置@EnableAutoConfiguration。您可能知道,@EnableAutoConfiguration尝试配置位于您的类路径上的 bean,例如 tomcat-embedded.jar。而@ImportAutoConfiguration只运行您在注释中提供的配置类。

这是 Spring Boot 应用程序 main 方法的示例,其中包含@ImportAutoConfiguration

@ComponentScan("path.to.your.controllers")
@ImportAutoConfiguration({WebMvcAutoConfiguration.class
    , DispatcherServletAutoConfiguration.class
    , EmbeddedServletContainerAutoConfiguration.class
    , ServerPropertiesAutoConfiguration.class
    , HttpMessageConvertersAutoConfiguration.class})
public class App {
  public static void main(String[] args) {
    SpringApplication.run(App.class, args);
  }
}
Run Code Online (Sandbox Code Playgroud)

您可能会说它是使用@EnableAutoConfiguration. 并在本例中配置准系统嵌入式 Tomcat 和 Spring WebMVC。


@Import用于导入标记为@Configuration包含自定义 bean 配置的 bean 配置类。