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メソッドをカットします.