@Component
注解表明一个类会作为组件类,并告知Spring
要为这个类创建bean
。@Bean
注解告诉Spring
这个方法将会返回一个对象,这个对象要注册为Spring
应用上下文中的bean
。通常方法体中包含了最终产生bean
实例的逻辑。
两者的目的是一样的,都是注册
bean
到Spring
容器中。
区别:
@Component(@Controller、@Service、@Repository)
通常是通过类路径扫描来自动侦测以及自动装配到Spring
容器中。- 而
@Bean
注解通常是我们在标有该注解的方法中定义产生这个bean
的逻辑。 @Component
作用于类,@Bean
作用于方法。
总结:
@Component
和@Bean
都是用来注册Bean
并装配到Spring
容器中,但是Bean
比Component
的自定义性更强。可以实现一些Component
实现不了的自定义加载类。
原文章链接:https://zhuanlan.zhihu.com/p/145852514