SpringBoot@Component和@Bean的区别

Posted 幽灵雾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot@Component和@Bean的区别相关的知识,希望对你有一定的参考价值。

【提问】

Spring的注解中,@Component和@Bean有什么区别?

【解答】

二者目的均是将Bean注册到Spring容器中,@Bean的作用是可以方便的通过代码来自定义Bean的构造。

具体区别:

1、目标范围不同

@Component 只能注解在类(ElementType.Type)中

@Bean 只能注解方法(ElementType.Method)中

2、实现原理不同

@Component (也包括@Controller、@Service、@Repository、@Configuration等)是通过类路径扫描来自动侦测并放入Spring容器中

@Bean 是通过我们在方法中自定义实现的方式构造这个Bean对象,方法返回后放入Spring容器中

3、应用场景不同

@Component 一般用于无状态的一些Bean中(没有类变量),例如功能、服务性的Service、Controler等

@Bean 一般用于需要带有状态的Bean中(有类变量),例如容器类的Bean、配置类的Bean等

以上是关于SpringBoot@Component和@Bean的区别的主要内容,如果未能解决你的问题,请参考以下文章