Component注解是 Spring 框架中用于将类交给 IOC(控制反转)容器管理的核心注解。

关于 @Component 注解及其作用的详细信息如下:

核心作用与机制

  1. 交给 IOC 管理:加上 @Component 注解后,程序运行时就会将该类交给 Spring 的 IOC 容器管理起来。IOC 容器也被称为 Spring 容器。
  2. 控制反转:这是 Spring 的第一大核心概念。控制反转意味着对象创建的控制权从服务/类本身反转给了容器。
  3. 组件扫描

衍生注解

在实际开发中,除了直接使用 @Component,还有其他注解是其封装或衍生的形式,用于标识不同层级的组件:

这些注解(例如 @Service@Repository)都可以被 @Component 替代,但建议在对应层级写明具体注解,以增强代码的可读性和规范性。

使用场景

通常,如果一个类属于三层架构(Controller、Service、Repository)之外,但仍需要由 Spring 容器进行管理时,就会使用 @Component。例如,常见的工具类或配置类。

需要注意的是,如果引入的类不是我们自己编写的,而是来自第三方依赖,则无法使用 @Component 及其衍生的注解来声明 Bean,此时需要使用 @Bean 注解来声明。

@Resource@Autowired 都是 Java (特别是 Spring 框架中) 用来进行依赖注入(Dependency Injection, DI)的注解,但它们之间存在几个关键的区别。

简单来说,最核心的区别是:

  1. @Autowired:是 Spring 框架_特有_的注解,默认**按类型(By Type)**进行注入。