Spring 常见注解

🧐 @Configuration@Import 的核心区别

特性 @Configuration @Import
主要目的 标记一个类是 Java 配置类,它是 Bean 定义的来源/容器 将一个或多个配置类或组件类引入到当前的配置类中。
角色 生产者 (Producer) 和 容器 (Container)。 引入者 (Importer) 或 聚合器 (Aggregator)。
通常用法 用于定义 @Bean 方法来创建和配置 Spring Bean。 用来合并、分组或有选择性地加载其他配置。
必须标记 必须标记在一个类上。 必须标记在另一个 @Configuration 类(或 @Component 等)上。
引入内容 它自己包含 bean 定义(通过 @Bean@ComponentScan)。 引入其他类(通常是 @Configuration 类,也可以是普通的 @Component 类、ImportSelectorImportBeanDefinitionRegistrar)。

详细解释

1. @Configuration (配置类)

@Configuration 的作用是告诉 Spring 容器:这是一个包含 bean 定义的类

  • 定义 Bean: 你可以在这个类中使用 @Bean 方法来手动实例化和配置 bean。
    @Configuration
    public class AppConfig {
        @Bean
        public UserService userService() {
            return new UserService();
        }
    }
    
  • 配置核心: 在 Java 配置方式中,它就是配置信息的中心。Spring 容器会扫描并处理被这个注解标记的类,从而将其中定义的 bean 注册到容器中。

2. @Import (引入)

@Import 的作用是让一个 @Configuration 类能够引入其他的配置类或组件类。它是一种实现配置模块化聚合的机制。

  • 聚合配置: 当你的应用有多个独立的配置模块(如数据库配置、安全配置、Web 配置)时,你可以使用 @Import 将它们集中到一个主配置类中。
    @Configuration
    @Import({DatabaseConfig.class, SecurityConfig.class}) // 将其他配置类引入
    public class MainAppConfig {
        // 主应用的其他配置或 Bean 定义
    }
    
    这样,你只需要将 MainAppConfig 注册到 Spring 容器,所有被引入的配置类也会被加载。
  • 引入普通组件: 从 Spring 3.1 开始,@Import 不仅可以引入 @Configuration 类,也可以直接引入普通的组件类(如没有 @Component@Service 注解的 POJO 或 Service 类)。被引入的组件类也会被注册为 Spring bean。
    @Configuration
    @Import(UserService.class) // 直接将 UserService 类注册为一个 Bean
    public class ComponentImportConfig {
        // ...
    }
    

参考资料

posted @ 2025-10-20 22:07  向着朝阳  阅读(8)  评论(0)    收藏  举报