springboot @component 注解和 @bean 注解的区别
bean注解: 如果我们在项目中,需要leverage第三方的组件的功能来实现我们的逻辑,那么通过 bean注解搭配configuration注解,可以动态控制生成该bean生成,比如在某个状态 if(state)then{generate the bean}.该过程也可以通过xml来实现。
Q&A: 这里bean可以用component替代吗?
no,因为component是用在类上面,因为没有第三方 class 的source code,无法添加component注解
component注解: component注解用在我们自己实现的类上面,it's purely declarative. spring识别到该注解,自动为该类创建bean。且class->bean是一一对应的关系。
Q&A: 这里component可以通过使用 bean 的方式去替换吗?
component是容器自动生成的,如果component中有autowired的bean,那么容器会都帮忙生成。如果使用 bean注解实现, 那么需要自己创建自己的bean,还要创建出这个bean依赖的bean,实现起来更为繁琐。
对比:
- bean更灵活,但是需要自己实现动态逻辑
- component由容器管理,但是省事一些。