作用对象不同: @Component 注解作用于类,而@Bean 注解作用于方法。
@Bean 默认的 Bean name 是方法名。
@Component 用于自动检测和自动装配到 Spring 容器中,主要用于类级别。@Bean 通常在@Configuration 类中使用,用于显式声明单个 bean,更加灵活
在 Spring 框架中,@Component和@Bean是用于定义和管理 Bean 的两种常见注解,但它们有不同的应用场景和作用对象:
-
作用对象:
@Component:这个注解用于类级别,通常用于将一个类标记为 Spring 中的一个组件,使其成为 Spring 容器管理的 Bean。它是通用的构造型注解之一(其他还有@Service,@Repository,@Controller等),这些注解实际都是@Component的特殊化。@Bean:这个注解用于方法级别,通常在配置类中使用。被标记的方法将返回一个对象,该对象会被注册为 Spring 应用上下文中的 Bean。
-
默认 Bean 名称:
- 使用
@Component时,默认情况下生成的 Bean 名称是首字母小写的类名。 - 使用
@Bean时,默认情况下生成的 Bean 名称是方法名。当然,你也可以通过在注解中显式指定名称来覆盖默认名称。
- 使用
这两者主要在于如何定义和配置 Beans:使用注解扫描自动检测组件(如使用@ComponentScan)或通过 Java 配置类显式地定义 Beans(如使用@Configuration 与@Bean 组合)。