@Component、@Bean都是使用注解的形式来定义bean,从功能上讲是一样的
@Component(包括@Service、@Repository)用于自动检测和使用类路径扫描注解,自动装配
bean。注解类和bean 之间是存在隐性的映射关系的,一个类对应一个注册的bean-
这种方式对于需要逻辑处理是有弊端的,纯粹是一种声明式注册 bean的手段
@Bean用于注册bean的,是一种显示标明的bean
注册bean与类型是完全分开进行管理的,便于统一管理操作
同时这个注解是标识在方法上的,我们也可以利用这个提供对象的方法来进行其他业务的扩展功能性更强
从二者对比来看:
@Component 使用较多,因为使用更简单
@Bean注册 bean的形式更加的集中,可以将这个配置类(@Configuration类)当做早期的纯xml 配置文件,如果对于某个类的bean的生产比较麻烦,需要做N多预处理工作,那么使用@Bean形式比较妥当