Spring boot @importatutoconfiguration和@Import之间有什么区别

Spring boot @importatutoconfiguration和@Import之间有什么区别,spring-boot,spring-java-config,Spring Boot,Spring Java Config,org.springframework.boot.autoconfigure.importAtoConfiguration确实是对org.springframework.context.annotation.Import的改进替代,因为它与org.springframework.context.annotation.Import具有相同的功能,而且还具有其他功能 @AutoConfigureBefore,@AutoConfigureAfter和@AutoConfigureOrder 是真的吗 o

org.springframework.boot.autoconfigure.importAtoConfiguration
确实是对
org.springframework.context.annotation.Import
的改进替代,因为它与org.springframework.context.annotation.Import具有相同的功能,而且还具有其他功能

@AutoConfigureBefore
@AutoConfigureAfter
@AutoConfigureOrder

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

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


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

这是具有
@ImportAutoConfiguration
的Spring引导应用程序主方法的示例:

@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);
  }
}
您可能会说,它是使用
@EnableAutoConfiguration
的替代方法。在本例中,配置barebone嵌入式Tomcat和Spring WebMVC



@Import
用于导入带有
@configuration
标记的bean配置类,该类包含您的自定义bean配置。

假设我有一个应用程序应用程序,这里作为示例提供。如果我用“导入”替换“ImportAtoConfiguration”,会有什么变化?我用
@Import
进行了尝试,但没有任何变化。所有的bean都被创建,所有的配置都被执行。实际上,我还对使用这两个注释之间的真正技术区别感兴趣。