SpringBoot @Bean 和 @Component 的区别

作用对象不同:

  1. @Component 注解作用于类,而 @Bean 注解作用于方法、@Component 通常是通过路径扫描来自动侦测以及自动装配到 Spring 容器中(我们可以使用 @ComponentScan 注解定义要扫描的路径从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中)。

  2. @Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,@Bean 告诉了 Spring 这是某个类的实例,当我们需要用它的时候还给我。

  3. @Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。

  4. 比如当我们引用第三方库中的类需要装配到 Spring 容器时,只能通过 @Bean 来实现。



一、两个注解的作用


1、@Component: 作用于类上,告知Spring,为这个类创建Bean。


2、@Bean:主要作用于方法上,告知Spring,这个方法会返回一个对象,且要注册在Spring的上下文中。通常方法体中包含产生Bean的逻辑。 相当于 xml文件的中






二、区别

1、Component :作用于类上,通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。(@Controller、@Service、@Repository )

2、@Bean: 作用于方法或注解上,通常这个方法中定义产生这个Bean的逻辑。


三、联系

1、作用都是一样的,都是注册bean到Spring容器中。

2、引用第三方库中的类需要装配到Spring容器时,则只能通过@Bean来实现。如下:

 

四、总结


1、@Component和@Bean都是用来注册Bean并装配到Spring容器中,但是Bean比Component的自定义性更强。

可以实现一些Component实现不了的自定义加载类。


2、@Bean主要用于第三方类库的加载到Spring Bean中,之前通过xml中的



原文链接:https://blog.csdn.net/HaHa_Sir/article/details/115457955





评论


编程爱好者 © 2021 - 2024