主要流程:
获取增强器,如果为空的话就返回空的数组。
protected static final Object[] DO_NOT_PROXY = null;
@Override
@Nullable
protected Object[] getAdvicesAndAdvisorsForBean(
Class<?> beanClass, String beanName, @Nullable TargetSource targetSource) {
List<Advisor> advisors = findEligibleAdvisors(beanClass, beanName);
if (advisors.isEmpty()) {
return DO_NOT_PROXY;
}
return advisors.toArray();
}
protected List<Advisor> findEligibleAdvisors(Class<?> beanClass, String beanName) {
// 候选增强
List<Advisor> candidateAdvisors = findCandidateAdvisors();
// 过滤得到可用增强
List<Advisor> eligibleAdvisors = findAdvisorsThatCanApply(candidateAdvisors, beanClass, beanName);
// 扩展增强
extendAdvisors(eligibleAdvisors);
if (!eligibleAdvisors.isEmpty()) {
// 排序
eligibleAdvisors = sortAdvisors(eligibleAdvisors);
}
return eligibleAdvisors;
}
最终来到方法 findEligibleAdvisors ,
这里主要分3步完成,首先找到所有增强,然后过滤出当前可用的,再扩展处理下,最后排序返回🔙 。