AspectJAwareAdvisorAutoProxyCreator.java 文件源码

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

项目:tiny-spring 作者:
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws Exception {
    if (bean instanceof AspectJExpressionPointcutAdvisor) {
        return bean;
    }
    if (bean instanceof MethodInterceptor) {
        return bean;
    }
    List<AspectJExpressionPointcutAdvisor> advisors = beanFactory
            .getBeansForType(AspectJExpressionPointcutAdvisor.class);
    for (AspectJExpressionPointcutAdvisor advisor : advisors) {
        if (advisor.getPointcut().getClassFilter().matches(bean.getClass())) {
               ProxyFactory advisedSupport = new ProxyFactory();
            advisedSupport.setMethodInterceptor((MethodInterceptor) advisor.getAdvice());
            advisedSupport.setMethodMatcher(advisor.getPointcut().getMethodMatcher());

            TargetSource targetSource = new TargetSource(bean, bean.getClass(), bean.getClass().getInterfaces());
            advisedSupport.setTargetSource(targetSource);

            return advisedSupport.getProxy();
        }
    }
    return bean;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号