我对何时使用一个与另一个的文档不是很清楚。从我尝试过的事情来看,他们似乎都有相同的行为。具体有什么区别?
最佳答案
基本上, @导入 注释导入一个或多个 @配置类,这些类可以声明一个或多个 @ bean 方法。
鉴于, @ImportAutoConfiguration 注释导入并应用指定的自动配置类。
More detailed comparison over @Import and @ImportAutoConfiguration
@进口
spring-context
的注释模块 用户配置
@Configuration
public class UserConfig {
@Bean(name="user")
public User userConfigure(){
return new User();
}
}
调度器配置
@Configuration
public class SchedulerConfig {
@Bean(name="scheduler")
public Schedule cheduleConfigure(){
return new Schedule();
}
}
应用配置
使用 @Import 注解导入这些配置类
@Configuration
@Import({ UserConfig.class, SchedulerConfig.class })
public class AppConfig {
}
@ImportAutoConfiguration
spring-boot
模块 - 您只能在 Spring-Boot applications
中使用此注解与@Import 部分一样,我们也需要在这里创建使用@Configuration 注释的类。与上面的 @Import 示例不同,您可以使用不同的
org.springframework.boot.autoconfigure.condition
s(ConditionalOnProperty、ConditionalOnResource、ConditionalOnBean、ConditionalOnMissingBean 等)在您的auto-configuration
类(class)。@Configuration
@ConditionalOnProperty(prefix = "my.data.base.config", name = "enable", havingValue = "true")
public class DataAutoConfiguration {
@Bean
@ConfigurationProperties(prefix = "my.data.base")
public DataService dataService() {
return new DataService();
}
}
使用 @ImportAutoConfiguration 注解导入自动配置
@Configuration
@ImportAutoConfiguration(DataAutoConfiguration.class)
public class MyDatabaseAutoconfiguration {
//...
}
现在您需要在
resources/META-INF/spring.factories
注册它文件,org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.your.package.autoconfiguration.MyDatabaseAutoconfiguration
要启用自动配置,我们可以使用 之一@SpringBootApplication 或 @EnableAutoConfiguration 注解
@SpringBootApplication
public class AutoconfigurationApplication {
public static void main(String[] args) {
SpringApplication.run(AutoconfigurationApplication.class, args);
}
}
更多引用资料
关于spring - 何时使用 @ImportAutoConfiguration 与 @Import,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59444679/