Disconfソース分析01

1677 ワード

DisconfMgrBean.java


 


UMLクラス図により、DisconfMgrBeanは、beanがインスタンス化される前に新しいBeanDefinitionを登録できるようにするBeanDefinitionRegistryメソッドを実装しています.コードロジックは次のとおりです.
DisconfMgrBean.postProcessBeanDefinitionRegistry
@Override
    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {

        //  
        DisconfCenterHostFilesStore.getInstance().addJustHostFileSet(fileList);
        // 
        List scanPackList = StringUtil.parseStringToStringList(scanPackage, SCAN_SPLIT_TOKEN);
        // unique
        Set hs = new HashSet();
        hs.addAll(scanPackList);
        scanPackList.clear();
        scanPackList.addAll(hs);

        //  
        DisconfMgr.getInstance().setApplicationContext(applicationContext);
        DisconfMgr.getInstance().firstScan(scanPackList);

        //  DisconfAspectJ
        registerAspect(registry);
    }

     private void registerAspect(BeanDefinitionRegistry registry) {

        GenericBeanDefinition beanDefinition = new GenericBeanDefinition();
        beanDefinition.setBeanClass(DisconfAspectJ.class);
        beanDefinition.setLazyInit(false);
        beanDefinition.setAbstract(false);
        beanDefinition.setAutowireCandidate(true);
        beanDefinition.setScope("singleton");

        registry.registerBeanDefinition("disconfAspectJ", beanDefinition);
    }

構成されたスイープパケットを再削除し、DisconfMgrのアプリケーションContext属性を設定して最初のスキャンを行い、DisconfAspectJクラスのbeanDefinitionをSpringコンテナに登録します.DisconfAspectJは主に@DisconfFileItemと@DisconfFile構成を加えたBeanのget/isメソッドをカットします.