@Bean与@Component作用于同一个类谁的优先级高
结论
@Configuration中@Bean的优先级高
原因
bean的创建过程
- 扫描指定包下的文件,加载beanDefinition
- 执行beanFactoryPostProcessor
- 根据beanDefinition创建对象
关键点在于 执行beanFactoryPostProcessor
ConfigurationClassPostProcessor获取到所有的,组件类型的beanDefinition(包含@Component和@Configuration...), 获取到其内部的@Bean方法组成的列表进行循环, 每一个@Bean方法都会对应一个新的BeanDefinition对象, 将这个对象进行注册, 这里注册之后会把以前扫描包时注册的beanDefinition给覆盖掉
后续通过benaDefinition创建对象时,就会以@Bean对应的beanDefinition对象进行创建 以该对象创建时不是执行构造方法而是执行@Bean所对应的方法
完结撒花
大致就是这么一个逻辑,可以看一下源码加深理解,不想看也可以记一下结论
一个简单的@Component修饰的类,没有@Bean那么第二步执行@Bean方法列表时就不会执行