@ImportAutoConfiguration和@Import有什么区别

时间:2017-04-27 09:19:44

标签: spring-boot spring-java-config

org.springframework.boot.autoconfigure.ImportAutoConfigurationorg.springframework.context.annotation.Import的改进替代品是否属实,因为相同并且另外尊重

@AutoConfigureBefore@AutoConfigureAfter@AutoConfigureOrder

1 个答案:

答案 0 :(得分:1)

  

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

不,它不是替代品,因为@ImportAutoConfiguration是一个特定于Spring Boot的注释,我可以称之为增强。但是,虽然看起来你在使用Spring Boot时可以互换使用它们,但我不会建议它。按照预期使用它们。

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

这是使用@ImportAutoConfiguration的Spring Boot应用程序主方法的示例:

@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的替代方法。在这种情况下配置裸机嵌入式Tomcat和Spring WebMVC。

<小时/> @Import用于导入标有@Configuration的bean配置类,其中包含您的自定义bean配置。