注解@Component和@Bean的区别

各自作用:

1.@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。

2.@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。

两者都会将bean注册到Spring容器中。

区别:

1.@Component(@Controller、@Service、@Repository)通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中;而@Bean注解通常是我们在标有该注解的方法中定义产生这个bean的逻辑。

2.@Component 作用于类,@Bean作用于方法。

3.@Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring 容器时,只能通过 @Bean 来实现。

总结:

@Component和@Bean都是用来注册Bean并装配到Spring容器中,但是Bean比Component的自定义性更强。可以实现一些Component实现不了的自定义加载类。