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都被创建,所有的配置都被执行。实际上,我还对使用这两个注释之间的真正技术区别感兴趣。