1、两者的联系和区别

  1. @Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean,@Component(@Controller、@Service、@Repository)通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。
  2. @Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑,并且实例名就是方法名。@Bean则常和@Configuration注解搭配使用。

    2、为什么有了@Compent,还需要@Bean呢?

  3. 如果想将第三方的类变成组件,你又没有没有源代码,也就没办法使用@Component进行自动配置,这种时候使用@Bean就比较合适了。不过同样的也可以通过xml方式来定义。

  4. 另外@Bean注解的方法返回值是对象,可以在方法中为对象设置属性。