gpt4 book ai didi

spring - 何时使用 @ImportAutoConfiguration 与 @Import

转载 作者:行者123 更新时间:2023-12-04 10:51:52 27 4
gpt4 key购买 nike

我对何时使用一个与另一个的文档不是很清楚。从我尝试过的事情来看,他们似乎都有相同的行为。具体有什么区别?

最佳答案

基本上, @导入 注释导入一个或多个 @配置类,这些类可以声明一个或多个 @ bean 方法。

鉴于, @ImportAutoConfiguration 注释导入并应用指定的自动配置类。

More detailed comparison over @Import and @ImportAutoConfiguration



@进口
  • 指示要导入的一个或多个组件类——通常是 @Configuration 类。
  • 这是来自 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
  • 导入并应用指定的auto-configuration classes .
  • 它是 spring-boot-autoconfigure 模块的注解。
  • 它代表了一种基于类路径中存在的依赖项自动配置 Spring 应用程序的方法。
  • 因为它来自 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);
    }
    }

  • 更多引用资料
  • ConditionalOnProperty
  • ConditionalOnResource
  • ConditionalOnBean
  • ConditionalOnMissingBean
  • spring-boot-custom-auto-configuration
  • using-boot-auto-configuration
  • 关于spring - 何时使用 @ImportAutoConfiguration 与 @Import,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59444679/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com