@Component
和 @Bean
是 Spring Framework 中用于注册 bean(组件)的两种不同方式,它们之间的区别主要在于用法和适用场景。
1. @Component:
@Component
是一个通用性的注解,用于标识一个类为 Spring 容器的组件。- 通过
@Component
注解标记的类会被 Spring 自动扫描并注册为 bean,通常用于标识普通的 Java 类作为 Spring 的组件。 - 适用于普通的 POJO 类、服务类、控制器等。
示例:
@Component
public class MyService {
// 类的实现...
}
2. @Bean:
@Bean
是一个在配置类(通常是带有@Configuration
注解的类)中用于定义 bean 的方法级注解。- 通过在配置类中的方法上标记
@Bean
注解,可以指定该方法返回的对象要被注册为一个 bean。 - 通常用于在 Spring 容器中注册第三方库、不受 Spring 管理的类、或者需要自定义初始化逻辑的对象。
示例:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
@Component
用于标记普通的 Spring 组件,适用于任何类。@Bean
用于在配置类中定义 bean,并允许进行更多的自定义配置。