0
点赞
收藏
分享

微信扫一扫

Spring factory load

if (!classpathPrefix.endsWith("/"))
    classpathPrefix = classpathPrefix + "/";  GenericApplicationContext appContext = null;
   if (useCache)
    appContext = getCachedContext(classpathPrefix, batchName);
   if (appContext != null) {
    log.debug("Returning cached application context:" + appContext);
    return appContext;
   }  // create and load new instance
   appContext = new GenericApplicationContext();  log.info("Loading spring config for environment: " + batchName);
  // Get the bean definitions for the environment
   ClassPathResource config = new ClassPathResource(classpathPrefix + batchName + CONFIG_SUFFIX);
   logResource("spring config", batchName, config);
   if (!config.exists())
    throw new RuntimeException("Config not found for environment: " + batchName);
   XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appContext);
   xmlReader.loadBeanDefinitions(config);  // Get any local bean definitions
   ClassPathResource localConfig = new ClassPathResource(classpathPrefix + LOCAL_ENV + CONFIG_SUFFIX);
   logResource("spring config", LOCAL_ENV, localConfig);
   if (localConfig.exists())
    xmlReader.loadBeanDefinitions(localConfig);  // Get property placeholders
   Resource envProps = new ClassPathResource(classpathPrefix + envName + PROPERTIES_SUFFIX);
   logResource("spring properties", envName, envProps);
   Resource passwordProps = new ClassPathResource(classpathPrefix + envName + PASSWORD_SUFFIX);
   logResource("spring properties", envName, passwordProps);  
   Resource localProps = new ClassPathResource(classpathPrefix + LOCAL_ENV + PROPERTIES_SUFFIX);
   logResource("spring properties", LOCAL_ENV, localProps);  // Load together to allow overriding in local env
   Resource[] ra = combineExistingResources(envProps, passwordProps, localProps);
   if (ra.length > 0) {
    PropertyPlaceholderConfigurer placeholderConfig = new PropertyPlaceholderConfigurer();
    placeholderConfig.setLocations(ra);
    placeholderConfig.postProcessBeanFactory(appContext.getDefaultListableBeanFactory());
   }  // Get property overrides
   Resource envOverrideProps = new ClassPathResource(classpathPrefix + envName + OVERRIDES_SUFFIX);
   logResource("spring override properties", envName, envOverrideProps);
   Resource localOverrideProps = new ClassPathResource(classpathPrefix + LOCAL_ENV + OVERRIDES_SUFFIX);
   logResource("spring override properties", LOCAL_ENV, localOverrideProps);  // load together to allow overriding in local env
   Resource[] rao = combineExistingResources(envOverrideProps, localOverrideProps);
   if (rao.length > 0) {
    PropertyOverrideConfigurer overrideConfig = new PropertyOverrideConfigurer();
    overrideConfig.setLocations(rao);
    overrideConfig.postProcessBeanFactory(appContext.getDefaultListableBeanFactory());
   }  // Cache before refreshing to allow a certain amount of self-referencing in the beans
   log.info("Caching app context:" + appContext);
   cacheContext(classpathPrefix, batchName, appContext);
   log.info("Refreshing app context:" + appContext);
   appContext.refresh();
   log.info("Returning app context:" + appContext);
   return appContext;

举报

相关推荐

0 条评论