Component注解是 Spring 框架中用于将类交给 IOC(控制反转)容器管理的核心注解。
关于 @Component 注解及其作用的详细信息如下:
@Component 注解后,程序运行时就会将该类交给 Spring 的 IOC 容器管理起来。IOC 容器也被称为 Spring 容器。@Component 注解正确生效,需要确保它能被“组件扫描”(Component Scanning)扫描到。@ComponentScan 注解用于执行组件扫描,它会扫描启动类所在的包及其子包下所有被 @Component 及其衍生的注解声明的类。在实际开发中,除了直接使用 @Component,还有其他注解是其封装或衍生的形式,用于标识不同层级的组件:
@Controller (或 @RestController)@Service@Repository这些注解(例如 @Service 和 @Repository)都可以被 @Component 替代,但建议在对应层级写明具体注解,以增强代码的可读性和规范性。
通常,如果一个类属于三层架构(Controller、Service、Repository)之外,但仍需要由 Spring 容器进行管理时,就会使用 @Component。例如,常见的工具类或配置类。
需要注意的是,如果引入的类不是我们自己编写的,而是来自第三方依赖,则无法使用 @Component 及其衍生的注解来声明 Bean,此时需要使用 @Bean 注解来声明。
@Resource 和 @Autowired 都是 Java (特别是 Spring 框架中) 用来进行依赖注入(Dependency Injection, DI)的注解,但它们之间存在几个关键的区别。
简单来说,最核心的区别是:
@Autowired:是 Spring 框架_特有_的注解,默认**按类型(By Type)**进行注入。