DefaultAdvisorAutoProxyCreator.java 文件源码

java
阅读 22 收藏 0 点赞 0 评论 0

项目:my-spring 作者:
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws Exception {

    if (Advice.class.isAssignableFrom(bean.getClass()) || Pointcut.class.isAssignableFrom(bean.getClass())
            || Advisor.class.isAssignableFrom(bean.getClass())
            || MethodInterceptor.class.isAssignableFrom(bean.getClass())) {
        return bean;
    }

    List<DefaultPointcutAdvisor> defaultPointcutAdvisors = beanFactory
            .getBeansForType(DefaultPointcutAdvisor.class);
    for (DefaultPointcutAdvisor advisor : defaultPointcutAdvisors) {
        if (advisor.getPointcut().getClassFilter().matches(bean.getClass())) {
            ProxyFactory advisedSupport = new ProxyFactory();
            advisedSupport.setMethodInterceptor((MethodInterceptor) advisor.getAdvice());
            advisedSupport.setMethodMatcher(advisor.getPointcut().getmethodMatcher());
            advisedSupport
                    .setTargetSource(new TargetSource(bean.getClass(), bean.getClass().getInterfaces(), bean));
            return advisedSupport.getProxy();
        }
    }
    return null;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号