Spring Boot中提供了一系列的注解比如@ImportAutoConfiguration和@EnableAutoConfiguration,它们最终都组合了@Import注解,那么,它们之间有什么区别呢?
@ImportAutoConfiguration是否可以替代@Import注解?@ImportAutoConfiguration和@EnableAutoConfiguration是否效果相同?
从根本上来说,@ImportAutoConfiguration是@Import的增强,限制了它使用的特定范围。
使用@EnableAutoConfiguration时会扫描整个类路径下,包括依赖引入的jar包所有的自动配置类(被注解了@Configuration的类),尝试进行自动配置。比如,tomcat-embedded.jar。
而@ImportAutoConfiguration只运行在你注解中提供的配置类。下面是一个Spring Boot入口方法中使用@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);
}
}
所以说,更准确的来说,@ImportAutoConfiguration与@EnableAutoC