MulCommonBaseServiceParser.java 文件源码

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

项目:zxl 作者:
private void buildPointcutAndAdvisorBeanDefinition(String name, List<String> expressionList, ParserContext parserContext, BeanDefinitionRegistry beanDefinitionRegistry) {
    CompositeComponentDefinition compositeComponentDefinition = new CompositeComponentDefinition("mul-transaction-expression", null);
    parserContext.pushContainingComponent(compositeComponentDefinition);

    BeanDefinition aspectJAutoProxyCreatorBeanDefinition = AopConfigUtils.registerAspectJAutoProxyCreatorIfNecessary(beanDefinitionRegistry);
    AopConfigUtils.forceAutoProxyCreatorToUseClassProxying(beanDefinitionRegistry);
    if (aspectJAutoProxyCreatorBeanDefinition != null) {
        BeanComponentDefinition componentDefinition = new BeanComponentDefinition(aspectJAutoProxyCreatorBeanDefinition, AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAME);
        parserContext.registerComponent(componentDefinition);
    }
    for (String expression : expressionList) {
        RootBeanDefinition pointcutDefinition = new RootBeanDefinition(AspectJExpressionPointcut.class);
        pointcutDefinition.setScope(BeanDefinition.SCOPE_PROTOTYPE);
        pointcutDefinition.setSynthetic(true);
        pointcutDefinition.getPropertyValues().add("expression", expression);
        String pointcutBeanName = parserContext.getReaderContext().registerWithGeneratedName(pointcutDefinition);
        parserContext.registerComponent(new PointcutComponentDefinition(pointcutBeanName, pointcutDefinition, expression));

        RootBeanDefinition advisorDefinition = new RootBeanDefinition(DefaultBeanFactoryPointcutAdvisor.class);
        advisorDefinition.getPropertyValues().add("adviceBeanName", new RuntimeBeanNameReference(name + HIBERNATE_ADVICE_SUFFIX));
        String advisorBeanName = parserContext.getReaderContext().registerWithGeneratedName(advisorDefinition);
        advisorDefinition.getPropertyValues().add("pointcut", new RuntimeBeanReference(pointcutBeanName));
        parserContext.registerComponent(new AdvisorComponentDefinition(advisorBeanName, advisorDefinition));
    }

    parserContext.popAndRegisterContainingComponent();
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号