主要流程:
获取增强器,如果为空的话就返回空的数组。
protected static final Object[] DO_NOT_PROXY = null;
@Override@Nullableprotected 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步完成,首先找到所有增强,然后过滤出当前可用的,再扩展处理下,最后排序返回🔙 。
