是什么@ImportAutoConfiguration和@Import
问题描述:
之间的区别,这是真的org.springframework.boot.autoconfigure.ImportAutoConfiguration
提高替代org.springframework.context.annotation.Import
因为做同样的,另外尊重是什么@ImportAutoConfiguration和@Import
@AutoConfigureBefore
,@AutoConfigureAfter
和@AutoConfigureOrder
?
答
当您不想启用
难道
org.springframework.boot.autoconfigure.ImportAutoConfiguration
是 为org.springframework.context.annotation.Import
改进更换?
不,它不是替代品,因为@ImportAutoConfiguration
是Spring Boot的特定注释,我可以称之为增强。但是,尽管看起来你可以在使用Spring Boot时交替使用它们,但我不会建议它。按照打算使用它们的方式使用它们。
当您不想启用
@EnableAutoConfiguration
的默认自动配置时,您将使用
@ImportAutoConfiguration
。您可能知道,
@EnableAutoConfiguration
试图配置位于类路径中的bean,例如tomcat-embedded.jar。而
@ImportAutoConfiguration
只运行您在注释中提供的配置类。
这是一个春天启动应用程序的主要方法与@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);
}
}
你可能会说,这是使用@EnableAutoConfiguration
替代。在这种情况下配置准系统嵌入式Tomcat和Spring WebMVC。
@Import
用于导入标记为
@Configuration
的bean配置类,其中包含您的自定义bean配置。
假设我有这里提供的应用程序应用程序作为示例。如果我通过“导入”替换“ImportAutoConfiguration”,会发生什么变化? – michaldo
我用'@ Import'试过了,没有改变。所有的bean都被创建并且所有的配置都被执行。 –
我其实也对使用这两个注释之间真正的技术差异感兴趣。 –