for (InstantiationAwareBeanPostProcessor bp : getBeanPostProcessorCache().instantiationAware) {//bean初始化后的操作
PropertyValues pvsToUse = bp.postProcessProperties(pvs, bw.getWrappedInstance(), beanName);
if (pvsToUse == null) {
if (filteredPds == null) {
filteredPds = filterPropertyDescriptorsForDependencyCheck(bw, mbd.allowCaching);
}
pvsToUse = bp.postProcessPropertyValues(pvs, filteredPds, bw.getWrappedInstance(), beanName);
if (pvsToUse == null) {
return;
}
}
pvs = pvsToUse;
}
上面是spring在将给定的属性给对象时调用InstantiationAwareBeanPostProcessor的postProcessProperties(AutowiredAnnotationBeanPostProcessor实现了自动注入属性)
开始实现多个primary选择其中的一个
import java.lang.annotation.*;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @inter